我正在尝试从CodeBehind(xaml.cs)和Text
Binding设置TextBlock
ViewModel
属性。
默认情况下,值从ViewModel加载,工作正常。
XAML:
<TextBlock Name="test">
<TextBlock.Text>
<MultiBinding StringFormat=" ({0}, {1} of {2})">
<Binding Path="SeriesId" />
<Binding Path="SeriesName" />
<Binding Path="SeriesCalc" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
XAML.cs
在按钮点击事件中尝试了以下内容,
test.DataContext = "Not Available";
或者
test.Text = "Not Available";
视图模型:
在另一个按钮Command
中,我正在尝试将值分配给TextBlock
。
SeriesId= GetIds();
SeriesName= GetNamesWithDE();
SeriesCalc= CalculateValue();
但是,一旦从后面的代码设置了“Not Available
”,就无法从ViewModel
覆盖它。
我哪里错了?
答案 0 :(得分:2)
如果您编写test.Text = "Not Available";
,则通过使用简单字符串覆盖数据绑定来破坏数据绑定。如果要完成,请使用数据绑定并更改后面代码中的TextBlock
值,之后应更新绑定:
test.Text = "Not available";
test.GetBindingExpression(TextBlock.TextProperty).UpdateSource();
或使用SetCurrentValue
方法设置依赖项属性的值而不更改其值源。
test.SetCurrentValue(TextBlock.TextProperty, "Not available");