Wpf привязка двух текстовых полей к одному свойству - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь привязать два текстовых поля к одному текстовому свойству, но если я изменяю текст одного текстового поля, источник обновляется, а не другое текстовое поле. Как я могу связать их обоих.

Вот мой код:

 Public Sub New
    DataContext = Me
 End Sub
   Private _text As String = "Test string"
Public Property Text As String
    Get
        Return _text
    End Get
    Set(value As String)
        If Not _text = value Then
            _text = value
            OnPropertyChanged("Text")
        End If
    End Set
End Property

Вот мой xaml:

<TextBox Text="{Binding Text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,ValidatesOnNotifyDataErrors=True}"/>
<TextBox Text="{Binding Text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,ValidatesOnNotifyDataErrors=True}"/>

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Я могу показать вам простой пример выполнения вашей цели, где вы используете экземпляр ViewModel, чтобы связать оба свойства Text вашего TextBoxs с. Он использует C #, но я думаю, что это достаточно просто понять логику этого ...

Ваш MainWindow.xaml

<Grid Name="myGrid">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <TextBox Text="{Binding Text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,ValidatesOnNotifyDataErrors=True}"/>
        <TextBox Text="{Binding Text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,ValidatesOnNotifyDataErrors=True}" Grid.Column="1"/>
</Grid>

И ваш MainWindow.xaml.cs

public partial class MainWindow : Window
    {
        readonly MyViewModel myVM = new MyViewModel();
        public MainWindow()
        {
            InitializeComponent();
            myGrid.DataContext = MyVM;
        }

        public MyViewModel MyVM
        {
            get { return myVM; }        
        }

    }

    public class MyViewModel
    {
        public string Text { get; set; }
    }

Надеюсь, это поможет ...

0 голосов
/ 29 сентября 2019

OnPropertyChanged должен быть вызван с именем свойства, которое изменяется. Поэтому вы должны вызывать его с «Текст» в качестве параметра. Больше информации на https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-implement-property-change-notification

...