[英]Binding ComboBox item to string
我想將一個ComboBox項綁定到一個字符串,但它不起作用。 我的代碼如下。
代碼在視圖中:
<ComboBox
SelectedValuePath="content"
SelectedItem="{Binding ProductName}"
......
<ComboBoxItem>1111111111</ComboBoxItem>
<ComboBoxItem>2222222222222</ComboBoxItem>
<ComboBoxItem>333333333333</ComboBoxItem>
</ComboBox>
視圖模型中的代碼:
private string _productName;
public string ProductName
{
get { return _productName; }
set
{
if (_productName != value)
{
_productName = value;
RaisePropertyChangedEvent("ProductName");
}
}
}
我假設你想從ComboboxItem而不是ComboBoxItem迭代獲取文本。
所以你綁定了錯誤的信息。 這應該工作。
<ComboBox
SelectedValuePath="content"
Text="{Binding ProductName}"
......
<ComboBoxItem>1111111111</ComboBoxItem>
<ComboBoxItem>2222222222222</ComboBoxItem>
<ComboBoxItem>333333333333</ComboBoxItem>
</ComboBox>
Selected Item的類型為ComboBoxItem,它不接受String。 如果您想在其他地方顯示產品名稱,請嘗試以下方法:
<TextBox Text="{Binding ElementName=my_ComboBox, Path=SelectedItem}"/>
只是一個建議。 您已經使用了SelectedItem
的綁定,為什么不使用ItemsSource
為Items設置另一個綁定? 因此,您不需要在視圖中靜態添加它們。
此外,您不必懷疑是否使用SelectedItem
綁定處理ComboxItem
或String
實例。 如果通過ItemsSource
進行綁定,您可以確定SelectedItem
是一個字符串。
這是代碼:
<ComboBox
SelectedValuePath="content"
SelectedItem="{Binding ProductName}"
ItemsSource="{Binding ProductNames}"
</ComboBox>
在您的視圖模型(或后面的代碼)中,您可以定義ProductNames
:
public String[] ProductNames
{
get
{
return _productNames;
}
set
{
if (_productNames!= value)
{
_productNames = value;
RaisePropertyChangedEvent("ProductNames");
}
}
}
String[] _productNames;
public NameOfConstructor()
{
List<String> productNames = new List<String>();
productNames.Add("A");
productNames.Add("B");
productNames.Add("C");
ProductNames = productNames.ToArray();
}
如果在執行期間名稱列表有可能發生變化,我會使用ObservableCollection<string>
而不是String[]
。
它應該是這樣的
<ComboBox Name="productComboBox" Width="200" Height="30" ItemsSource="{Binding ProductCollection}"> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Path=ProductName}"></TextBlock> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox>
如果你想在文本框中顯示某個地方使用它
<TextBox Text="{Binding ElementName=productComboBox, Path=SelectedItem}"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.