嗨,谢谢你的帮助。
以下xaml工作正常:
<ComboBox Name="cboCit_type"
IsSynchronizedWithCurrentItem="True"
mvvm:View.FlowsWithPrevious="True"
ItemsSource="{Binding Path=cuCodeInfo.CitTypes}"
SelectedValuePath="code"
DisplayMemberPath="code"
Text="{Binding cit_type}"
IsEditable="true"
IsReadOnly="false"
SelectedValue="{Binding Path=cit_type}">
</ComboBox>
cuCodeInfo.CitTypes只是可用项目的列表。有许多公共财产,但有问题的2是“代码”和“描述”。
现在,我显示可用的代码值,用户选择一个。如果已经选择了一个,则显示页面显示的时间。这一切都很好。
那么我认为展示代码和描述可能会很好。我认为这不应该太难......
所以我删除了DisplayMemberPath语句并添加到ItemTemplate中。
当我这样做时,一切看起来都很棒,直到我尝试从列表中选择一个项目。当我这样做,而不是显示所选代码,我会得到一个空字符串。我已经搜索了互联网,试图找到我需要添加到DataTemplate来解决这个问题的一件事,但我尝试过的一切都失败了。这是不起作用的代码:
<ComboBox Name="cboCit_type"
IsSynchronizedWithCurrentItem="True"
mvvm:View.FlowsWithPrevious="True"
ItemsSource="{Binding Path=cuCodeInfo.CitationTypes}"
SelectedValuePath="code"
Text="{Binding cit_type}"
IsEditable="true"
IsReadOnly="false"
SelectedValue="{Binding cit_type}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<Border BorderThickness="0,0,1,0" BorderBrush="Black">
<TextBlock Text="{Binding Path=code}" mvvm:View.WidthEx="2" ></TextBlock>
</Border>
<TextBlock Text="{Binding Path=description}" mvvm:View.WidthEx="15" Margin="1" ></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
非常感谢任何帮助。
顺便说一句,我必须以多种形式使用这种完全相同的格式(相同的列表,等等,只是不同的SelectedValue) - 所以如果你想在xaml中建议最好的方法,那就太好了。在我的前xaml时代,我只会创建一个控件,设置一个属性或2,并在我的所有表单中使用它。但是我应该使用xaml,所以我不确定最好的方法。
谢谢!
答案 0 :(得分:2)
我无法相信我在网上搜索找到答案,直到现在,找不到答案。答案就像我想的那样容易。
只需更换: 的DisplayMemberPath = “代码” 同 TextSearch.TextPath = “代码” 并且代码工作得很好。
感谢所有帮助过的人。
答案 1 :(得分:1)
我可以告诉您如何使用SelectedItem
视图模型
public class ViewModel
{
public ViewModel()
{
//Suppose your collection CitTypes is Initialized and filled with there Items
//Now you can set first Element as selected in ComboBox
SelectedItem = CitTypes.FirstOrDefault();
}
CitType selectedItem;
public CitType SelectedItem
{
get { return selectedItem; }
set { selectedItem = value; RaisePropertyChanged("SelectedItem"); }
}
}
XAML
<ComboBox Name="cboCit_type"
IsSynchronizedWithCurrentItem="True"
mvvm:View.FlowsWithPrevious="True"
ItemsSource="{Binding Path=cuCodeInfo.CitationTypes}"
Text="{Binding cit_type}"
IsEditable="true"
IsReadOnly="false"
**SelectedItem="{Binding SelectedItem}"**>