سؤال

ولقد استخدمت القالب التالي في مشروعي:

<DataTemplate 
    x:Key="textBoxDataTemplate">
    <TextBox 
        Name="textBox"
        ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"
        Tag="{Binding}"
        PreviewKeyDown="cellValueTextBoxKeyDown">
        <TextBox.Text>
            <MultiBinding
                Converter="{StaticResource intToStringMultiConverter}">
                <Binding 
                    Path="CellValue"
                    Mode="TwoWay">
                        <Binding.ValidationRules>
                            <y:MatrixCellValueRule 
                                MaxValue="200" />
                        </Binding.ValidationRules>
                </Binding>
                <Binding 
                    RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type y:MatrixGrid}}" 
                    Path="Tag"
                    Mode="OneWay" />
            </MultiBinding>
        </TextBox.Text>
    </TextBox>
</DataTemplate>

وأنا استخدم هذا النموذج لإنشاء مصفوفة تحرير للمستخدم. يكون المستخدم قادرا على التنقل من خلية إلى أخرى داخل المصفوفة وأود أن أسلط الضوء على البيانات في النص المحدد ولكن لا يعمل. دعوت TextBox.Focus () وTextBox.SelectAll () لتحقيق التأثير ولكن لا شيء. التركيز () يعمل ولكن النص لم يحصل أبرز.

وأي مساعدة هي موضع ترحيب وتقدير.

هل كانت مفيدة؟

المحلول

حسنا، إذا كان أي شخص مهتم، كان الحل لهذه المشكلة من الألغام لتشمل e.Handled = true; بيان في أسلوب معالج الحدث حيث تسمى textBox.SelectAll() وtextBox.Focus().

وكانت المشكلة التي أرفقت معالج حال إلى حال PreviewKeyDown مربع النص والذي يتعامل مع الحدث نفق وربما يتم تجاهل دعوات SelectAll() وFocus() دون استدعاء بيان e.Handled = true;.

ونأمل أن سوف تساعد شخص ما.

نصائح أخرى

ودون بقية التعليمات البرمجية من الصعب القول ما اذا كان هذا العمل بالنسبة لك، ولكن لقد وضعت عينة صغيرة باستخدام DataTemplate الخاص بك (ناقص الأجزاء التي تشير إلى الرمز الذي لم ينشر).

وكنت قادرا على اختيار كل نص في مربعات النص بإضافة معالج الحدث GotFocus لمربع نص في DataTemplate:

<TextBox 
    ...
    GotFocus="textBox_GotFocus"
    ...>
...
</TextBox>

والتعليمات البرمجية الخلفية:

    private void textBox_GotFocus(object sender, RoutedEventArgs e)
    {
        TextBox textBox = sender as TextBox;
        if (textBox != null)
        {
            textBox.SelectAll();
        }
    }

واسمحوا لي أن أعرف إذا كنت تحاول تحديد كافة في ظل ظروف مختلفة (وليس عندما يتلقى مربع التركيز).

وهنا حل جيد جدا بسيط جدا (أنا لا أعرف ما اذا كان يعمل للقالب الخاص بك، ولكن محاولة إعطائها): <وأ href = "http://social.msdn.microsoft.com/forums/en -US / برنامج الأغذية العالمي / موضوع / 564b5731-af8a-49bf-b297-6d179615819f "يختلط =" نوفولو "> http://social.msdn.microsoft.com/forums/en-US/wpf/thread/564b5731-af8a-49bf -b297-6d179615819f

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top