我在我的代码中使用了名为cmbTobetraced的组合框来选择是或否,但是我无法将数据绑定到组合框。它没有显示"否&#34 ;组合框中的值Text .Its始终显示yes值。我已经使用SelectedItem和SelectedItem进行了检查,但也没有显示结果.Tobetraced是一个属性名称,它是我班级中的字符串数据类型:
...
<GridViewColumn Header="To be traced" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox
Width="60"
Name="cmbTobetraced"
Margin="0,15,0,5"
HorizontalAlignment="Left"
VerticalContentAlignment="Center"
BorderBrush="White"
SelectedValuePath="Tag"
Text="{Binding Path=Tobetraced, Mode=TwoWay}">
<ComboBoxItem Content="Yes" Tag="0"/>
<ComboBoxItem Content="No" Tag="1" />
<!--<ComboBox.DisplayMemberPath>
<Binding Path="Tobetraced" />
</ComboBox.DisplayMemberPath>-->
<!--<ComboBoxItem >Yes</ComboBoxItem>
<ComboBoxItem >No</ComboBoxItem>-->
</ComboBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="View Panel Trace Details " Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Width="Auto">
<Hyperlink Foreground="White"
Click="buttonClose_Click"
Cursor="Hand">View Panel Trace</Hyperlink>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</ScrollViewer>
</Grid>
答案 0 :(得分:0)
我认为您的XAML存在一些问题。 SelectedValuePath
不适用于您使用的设计方法。我认为你真正需要绑定的是SelectedItem
属性。
MSDN网络参考中详尽解释了SelectedItem
,SelecteValuePath
和SelectedValue
的概念 - 我强烈建议您对此概念非常熟悉。您可能想要开始的一个参考是:http://msdn.microsoft.com/en-us/library/ms788714(v=vs.110).aspx
您可以像这样绑定SelectedItem
:
<ComboBox
Width="60"
Name="cmbTobetraced"
Margin="0,15,0,5"
HorizontalAlignment="Left"
VerticalContentAlignment="Center"
BorderBrush="White"
SelectedItem="SelectedAnswer"
Text="{Binding Path=Tobetraced, Mode=TwoWay}">
代码隐藏可能如下所示:
private string selectedAnswer;
public object SelectedAnswer
{
get { return selectedAnswer; }
set
{
var cboItem = value as ComboBoxItem;
if (cboItem == null) return;
selectedAnswer = cboItem.Content.ToString();
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SelectedAnswer"));
}
}
}
答案 1 :(得分:0)
你的代码中只有一个简单的错误。您应该将Tobetraced
属性数据绑定到ComboBox.SelectedItem
属性而不是ComboBox.Text
属性。此外,您可以将int
属性数据绑定到ComboBoxItem.SelectedValue
属性,以获取放入ComboBoxItem.Tag
属性的数值...尝试此操作:
<ComboBox Width="60" Name="cmbTobetraced" Margin="0,15,0,5" HorizontalAlignment="Left"
VerticalContentAlignment="Center" BorderBrush="White" SelectedValuePath="Tag"
SelectionChanged="ComboBox_SelectionChanged" SelectedValue="{Binding IntProperty}"
SelectedItem="{Binding Tobetraced, Mode=TwoWay}">
<ComboBoxItem Content="Yes" Tag="0" />
<ComboBoxItem Content="No" Tag="1" />
</ComboBox>
您可能还会发现MSDN中的以下资源非常有用:
How to: Use SelectedValue, SelectedValuePath, and SelectedItem