我需要使用从ViewModel计算的数据更新标签。更新textBox时必须触发这个,因为我将使用textBox中的数据来计算必须在标签中显示的文本。
我的.xaml文件是:
...
<TextBox x:Name="tbSelectedValue"
PreviewTextInput="SelectedValue_PreviewTextInput"
KeyUp="SelectedValue_KeyUp"
Text="{Binding Path=SelectedValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox.InputBindings>
<KeyBinding Key="Enter" Command="{Binding SelectFileCommand}" />
</TextBox.InputBindings>
</TextBox>
<Label x:Name="lbSelectedFileName"
Content="{Binding Path=SelectedName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
...
我的ViewModel文件是:
public string SelectedValue
{
get { return selectedValue; }
set { SetProperty(ref selectedValue, value); }
}
public string SelectedName
{
get { return selectedName; }
set { selectedName = value; }
}
internal string GetSelectName()
{
try
{
selectedValue = (selectedValue == "" ? "" : GetFileByNumber(Int32.Parse(selectedValue)).name);
return selectedValue;
}
catch (Exception e)
{
return "Nenhum arquivo encontrado";
}
}
SelectedValue
有效,但SelectedName
不起作用。
我需要在更新textBox中的值(selectedValue)时调用函数GetSelectName
。我的函数GetSelectName
更新selectedName属性,必须在视图中更新。但它不起作用。
我必须做什么?
答案 0 :(得分:1)
根据@EdPlunkett评论,让我把它放在一起,看看它是否有帮助。
修改SelectedName,以便它可以通知属性更改。
public string SelectedName
{
get { return selectedName; }
set {
SetProperty(ref selectedName, value);
}
}
将
GetSelectName()
方法的结果分配给SelectedName
属性。
public string SelectedValue
{
get { return selectedValue; }
set
{
if (SetProperty(ref selectedValue, value))
{
//If property value changes, update the name property as well
SelectedName = GetSelectedName();
}
}
}
有帮助吗?