2011-04-23 39 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