我正在使用OneWayToSource
綁定,它似乎總是將我的源屬性設置爲null。爲什麼?這是我的麻煩,因爲我需要源屬性中的目標屬性的值,而不是null。OneWayToSource窘境
這裏是我的代碼:
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";
}
}
target屬性是MyButton.Content
。源屬性是MyViewModel.Txt
。 Txt
屬性應該設置爲「765」,但它是空的。
爲什麼我會收到空值而不是765?
編輯:
請看看裏面MyButton
構造。其實如果你會使用簡單的TwoWay
它會起作用。我測試了它,它與構造函數中設置的內容無關。它的東西與OneWayToSource
綁定我猜。
我們解釋我是如何用TwoWay
綁定,我沒有通過調用setvalue
方法,但再包裝或更好的內部設置構造函數中的DP值表示getter和setter我沒有提供任何二傳手因此爲什麼我做了我的TwoWay
有點像它的OneWayToSource
。我做了它來測試它的構造函數是否有錯。我認爲viewmodel內的屬性值爲765,所以這就是我的意思是TwoWay
綁定。我只是測試它是否是控件構造函數。它的一切都很好,在構造函數中設置一個值。
通過隱藏二傳手我的意思是 集合{}
您是否收到任何BindingErrors? – Jehof 2013-04-29 13:33:18
不,我不。 : - (( – 2013-04-29 13:33:54