我能够根据另一个内容(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来做同样的事情。提前感谢您的帮助。
答案 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版本。