Это не меняет свойство, которое связано (режим TwoWay) - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть текстовое поле, я связал его свойство Text со свойством MainTxtBoxTxt в ModalView Window.When MainTxtBoxTxt меняет его на TextBox, но при изменении свойства Text TextBox это не влияет на MainTxtBoxTxt в ModelView. 1001 *

<cstmTxtBox:CustomTextBox Grid.Row="0" TextWrapping="Wrap" FontSize="16" x:Name="TxtBox" cstmTxtBox:CustomTextBox.CaretIndex="{Binding Path=CaretIndex, Mode=TwoWay}" Text="{Binding Path=MainTxtBoxText,Mode=TwoWay}"   >

CustomTxtBox

public class CustomTextBox : TextBox
    {

        public CustomTextBox()
        {

        }
        public static  DependencyProperty CaretIndexProperty =DependencyProperty.RegisterAttached( "CaretIndex",typeof(int),typeof(CustomTextBox),new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.AffectsRender));
        public static void SetCaretIndex(UIElement element, int value)
        {
            element.SetValue(CaretIndexProperty, value);
        }
        public static int GetCaretIndex(UIElement element)
        {
            return (int)element.GetValue(CaretIndexProperty);
        }
    }

Ответы [ 3 ]

2 голосов
/ 29 ноября 2011

Попробуйте это

Text="{Binding Path=MainTxtBoxText,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
1 голос
/ 29 ноября 2011

В вашем коде отсутствует свойство UpdateSourceTrigger, которое указывает, как изменение данных должно отражаться в свойстве модели.Чтобы уточнить, свойство UpdateSoruceTrigger имеет четыре варианта на выбор: -

По умолчанию - которое возвращает значение по умолчанию UpdateSourceTrigger целевого свойства зависимости.Это зависит от контроля.

LostFocus - изменения отражаются, когда фокус удаляется от текущего элемента управления.

PropertyChanged - отражают изменения, как только изменяются данные.Для текстового поля при каждом нажатии клавиши происходят изменения.

Явный - Как следует из названия, это происходит по вашей команде.Вы должны вызвать метод UpdateSource, иначе изменения не распространятся обратно на источник

1 голос
/ 29 ноября 2011

Используйте следующее:

<cstmTxtBox:CustomTextBox Grid.Row="0" TextWrapping="Wrap" FontSize="16" x:Name="TxtBox" cstmTxtBox:CustomTextBox.CaretIndex="{Binding Path=CaretIndex, Mode=TwoWay}" Text="{Binding Path=MainTxtBoxText,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"   >

По умолчанию в текстовом поле обновляется вид модели при потере фокуса.Указание UpdateSourceTrigger = PropertyChanged будет обновлять модель представления при каждом изменении текста в текстовом поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...