2011-04-23 78 views
0

我能够根据另一个内容(datagrid中的数据)的属性来切换menuItem的可见性。我需要能够实现与列表框项目相同。我很难这样做。我想知道是否有人可以帮助:任何帮助,高度赞赏!如何检查ListBoxItem的内容名称?

它的菜单项的工作方式: 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列表框的问题。它与MenuItems完美配合。

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

我需要设置变种这个coede线转换的方式,它会与ListBoxItem的工作:

列表框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(); 

我希望这是可能的。它与以前的控件很好地工作,但我需要使用列表框来做同样的事情。预先感谢您的帮助。

回答

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,因为首先已经有conditional版本。

+0

非常感谢。它效果很好。 – vladc77 2011-04-25 05:38:06