Я использую привязку OneWayToSource
, и кажется, что он всегда устанавливает для моего источника свойство значение null. Почему это так? Это вызывает у меня проблемы, потому что мне нужно значение из свойства target в моем исходном свойстве, а не null.OneWayToSource Dilemma
Вот мой код:
MyViewModel.cs:
public class MyViewModel
{
private string str;
public string Txt
{
get { return this.str; }
set { this.str = value; }
}
}
MainWindow.cs:
public MainWindow()
{
InitializeComponent();
MyViewModel vm = new MyViewModel();
vm.Txt = "123";
this.DataContext = vm;
}
MainWindow.xaml:
<Window x:Class="OneWayToSourceTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:local="clr-namespace:OneWayToSourceTest">
<Grid>
<local:MyButton Content="{Binding Path=Txt, Mode=OneWayToSource}"/>
</Grid>
</Window>
MyButton.cs:
public class MyButton : Button
{
public MyButton()
{
this.Content = "765";
}
}
Целевое свойство MyButton.Content
. Свойством source является MyViewModel.Txt
. Свойство Txt
должно быть установлено в «765», но вместо этого оно равно null.
Почему я получаю null вместо 765?
EDIT:
Пожалуйста, посмотрите внутри MyButton
конструктора. На самом деле, если вы будете использовать простой TwoWay
, он будет работать. Я тестировал его, и он не имеет ничего общего с содержимым, которое устанавливается внутри конструктора. Его что-то с OneWayToSource
привязкой.
Теперь, чтобы объяснить, как я использовал TwoWay
связывание, я установить значение дп внутри конструктора, вызвав setvalue
метод, но затем внутри обертки или лучше сказал геттер и сеттер я не предложил сеттер, следовательно, почему я сделал мой TwoWay
вид выглядит как его OneWayToSource
. Я сделал это, чтобы проверить, не виноват ли его конструктор. Я понял, что свойство внутри viewmodel имеет значение 765, так что я имел в виду с привязкой TwoWay
. Я просто тестировал, был ли он конструктором управления. Его все отлично с установкой значения внутри конструктора.
Скрывая сеттер Я имею в виду этот множество {}
Есть ли у вас какие-либо BindingErrors? – Jehof
Нет. Я не хочу. : - (( –