Próbuję znaleźć ToggleButton
powiązanych w moim CollectionViewGroup, mój XAML struktura jest następująca:Nie mogli znaleźć ToggleButton w CollectionViewGroup
<UserControl.Resources>
<CollectionViewSource Source="{Binding Matches}" x:Key="GroupedItems">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="MatchNation" />
<PropertyGroupDescription PropertyName="MatchLeague" />
</CollectionViewSource.GroupDescriptions>
</UserControl.Resources>
Jak widać Mam CollectionViewGroup
że filtrować ObservableCollection
binded Matches
dla Nation
i League
.
Do tego mam uznany za ListView
że mają dwa GroupStyle
, że jeden filtr dla Country
i inny dla League
, w tym kawałku kodu dodam tylko drugi GroupStyle (który zawiera ToggleButton):
<ListView ItemsSource="{Binding Source={StaticResource GroupedItems}}">
<!-- this is the second group style -->
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander IsExpanded="True" Background="#4F4F4F">
<Expander.Header>
<DockPanel Height="16.5">
<TextBlock Text="{Binding Name}" FontWeight="Bold" Foreground="White" FontSize="11.5" VerticalAlignment="Bottom" />
<ToggleButton Checked="{Binding IsFavourite}" HorizontalAlignment="Right"/>
</DockPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
A więc, jak widać w stylu drugiej grupy (Nation -> League
) Mam ToggleButton.
Teraz GroupStyle będzie powtarzany na podstawie elementów dostępnych w ObservableCollection
, więc na przykład:
|England
|Premier League
1. item
2. item
3. item
|Afghanistan
|Afghan Premier League
1. item
2. item
jest to organizacja, teraz wyobrazić, że dla Premier League
z England
i Afghan Premier League
z Afghanistan
jest ToggleButton
, które wstawiłem po prawej stronie, potrzebuję uzyskać wszystkie ToggleButtons
z każdego Group
dostępnego na liście. Próbowałem to:
var playingListSource = (ListCollectionView).Playing.Items.SourceCollection;
foreach (var gp in playingListSource.Groups)
{
var rootGroup = (CollectionViewGroup)gp; //Convert the nested group
var parentGroup = rootGroup.Items;
}
Zasadniczo wyodrębnić grupę o liście i starał się znaleźć ToggleButton na Nester grupy, ale nie mogę go znaleźć. Ktoś może mi pomóc?
Dzięki za odpowiedź, próbowałem kodu ale mam problem, zmienna 'toggleButton' jest waloryzowana z Wartość 'null'. To jest obraz zawartości właściwości 'Szablon', gdzie wywołujesz metodę' ZnajdźNazwa': http://imgur.com/a/EqY6k – Unchained
Czy możesz potwierdzić, że: ** a) ** masz przypisany name z 'x: Name =" PART_ToggleButton "' do kontrolki wewnątrz szablonu, ** b) ** wywołujesz 'FindName' o dokładnie takiej samej nazwie, o której mowa w _a) _ (" PART_ToggleButton "to tylko przykład, możesz to zmienić, ale musi być taka sama w obu miejscach), i ** c) ** kontrola, do której przypisano nazwę ** jest ** w rzeczywistości 'ToggleButton' (lub pochodzi od niego)? – Grx70
W końcu znalazłem problem. Więc próbowałem twojego kodu wstawiając 'ToggleButton' w' Template' i działa dobrze, w pierwszym ćwiczeniu to nie działa, ponieważ nadpisałem ToggleButton własnym stylem. Więc w "szablonie" mam 'UserControl' z' ToggleButton' wewnątrz, po więcej szczegółów utworzyłem wklejkę: http://pastebin.com/CXybKUFn Dodaję też komentarze, aby lepiej wyjaśnić sytuację . – Unchained