在我看来,我有一个Combobox和一个TextBlock . TextBlock通过FormLoad上名为“MyViewModel”的ViewModel在XAML中的Text属性上设置的DataBinding来接收值 .
Combobox有一个ItemSource和一个SelectedItem,它们被绑定到同一个ViewModel中的属性,即“MyViewModel”
现在,当我从视图中更改Combobox的选择时,我希望在TextBlock中设置Combobox的SelectedItem对象的成员 .
我怎么能这样做?即有什么方法我可以根据我在运行时的情况以某种方式将TextBlock的Text的DataBinding属性更改/切换到“MyViewModel”的不同源/属性?或者如何最好地解决这个问题?
public class AllTexts
{
public int ID {get;set;}
public string Text1{get;set;}
public string Text2{get;set;}
}
public class MyViewModel:INotifyPropertyChanged//Assume the interface has been implemented.
{
private string p_Text1;
private AllTexts p_SelectedRec;
public string Text1
{
get{return p_Text1;}
}
set
{ if(p_Text1!=value)
{
p_Text1=value;
RaisePropertyChanged("Text1");
}
}
public List<AllTexts> ALT;
public AllTexts SelectedRec
{
get{return p_SelectedRec;}
}
set
{ if(p_SelectedRec!=value)
{
p_SelectedRec=value;
RaisePropertyChanged("SelectedRec");
}
}
public MyViewModel()
{
ALT=new List<AllTexts>();//Assume this List gets populated
}
}
MainWindow.Xaml(查看)
<ComboBox x:Name="cmbSelectText" ItemsSource="{Binding ALT}" DisplayMemberPath="Id" SelectedValuePath="Id" SelectedItem="{Binding SelectedRec}" SelectedValue="{Binding SelectedRec.Id,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock x:Name="txtTextSpecimen" Text="{Binding Text1,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
如何在运行时更改/切换Combox的SelectedItem的名为“Text2”的属性和ViewModel的名为“Text1”的属性之间的绑定?
2 回答
XAML:
C#:
在
SelectedRec
属性的source属性的setter中设置TextBlock
的source属性,例如:另请注意,您应该绑定到
ComboBox
的SelectedItem
或SelectedValue
属性: