如何检查ListBoxItem的内容名称?

时间:2011-04-23 05:31:44

标签: wpf silverlight wpfdatagrid listboxitem

我能够根据另一个内容(datagrid中的数据)的属性切换menuItem的可见性。我需要能够实现与列表框项目相同的功能。我很难这样做。我想知道是否有人可以提供帮助:非常感谢任何帮助!

它与menuItems一起使用的方式: XAML:

<SplitButton:MenuButton x:Name="test" Content="Test">
 <SplitButton:MenuButton.ButtonMenuItemsSource>
      <toolkit:MenuItem x:Name="item1" Header="Item1" />
      <toolkit:MenuItem x:Name="item1" Header="Item2" />
  </SplitButton:MenuButton.ButtonMenuItemsSource>

我在为lisboxitem列表框设置相同的var时遇到问题。它与MenuItems完美配合。

var item1Task = test.ButtonMenuItemsSource.OfType<ListBoxItem>().Where(temp => temp.Name == "item1").First();

我需要以与ListBoxItem一起使用的方式转换设置var的这个coede行:

Listbox XAML:

<toolkit:Expander x:Name="test" Header="Test">
<Border x:Name="Border">
  <ListBox x:Name="List">
         <ListBoxItem x:Name="item1" Content="Item1" />
         <ListBoxItem x:Name="item2" Content="Item2" />
   </ListBox>

我无法在列表框内容中使用OfType。我尝试过类似的东西:

var item1Task = List.OfType<ListBoxItem>().Where(temp => temp.Content == "item1").First(); 

我希望有可能。它与之前的控件一起工作得很好,但我需要使用listbox来做同样的事情。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您是否需要找到名为“item1”的ListBoxItem或将“item1”作为内容?要做第一个,您可以尝试此查询:

var item1Task = List.Items.Cast<ListBoxItem>().First(temp => temp.Name == "item1");

如果您需要查找内容,请使用:

var item1Task = List.Items.Cast<ListBoxItem>().First(temp => temp.Content == "Item1");

比较字符串时,应该更多地关注区分大小写。此外,不需要一起使用Where和First,因为First已经有conditional版本。