تغيير (تمكين / تعطيل) GroupStyle في ListView لبنود فئة مختلفة
سؤال
وكيف يمكنني التبديل بين GroupStyles
لListView
استنادا إلى بعض الشروط في وقت التشغيل؟ على سبيل المثال أنا بحاجة إلى استخدام الافتراضي للعناصر التي التي GroupStyle
اسم رأس لاغية، وإذا لم يكن لاغيا ثم استخدام موضوع GroupStyle
مخصص؟ حاولت GroupStyleSelector
، وأنها لا تعمل، لأنه يعمل لتجميع متعددة المستويات، وفي حالتي وليس لدي سوى تجمع مستوى واحد.
وإذا كانت الإجابة بنعم، ثم كيف؟
وGroupStyle
مخصص:
<Style x:Key="grouping"
TargetType="{x:Type GroupStyle}">
<Setter Property="ContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Margin"
Value="0,0,0,5" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="False"
BorderBrush="#FFA4B97F"
BorderThickness="0,0,0,1">
<Expander.Header>
<DockPanel>
<TextBlock FontWeight="Bold"
Text="{Binding Name}"
Margin="0"
Width="250" />
<TextBlock FontWeight="Bold"
Text="{Binding Path=Items[0].StartTime, StringFormat=T}" />
</DockPanel>
</Expander.Header>
<Expander.Content>
<ItemsPresenter />
</Expander.Content>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
</Style>
وشكرا جزيلا.
مع خالص التقدير، فلاد.
المحلول
حسنا،
ولقد وجدت الحل لذلك. أساسا أنا في حاجة لبناء DataTrigger والتحقق من وجود فئة في ذلك، وإذا كان يتطابق مع، استخدام GroupStyle مختلفة. هنا هو المثال:
<ControlTemplate TargetType="{x:Type GroupItem}"
x:Key="defaultGroup">
<ItemsPresenter />
</ControlTemplate>
<ListView.GroupStyle>
<GroupStyle >
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Margin"
Value="0,0,0,5" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="False"
BorderBrush="Black"
BorderThickness="3"
Padding="5,1,1,5">
<Expander.Header>
<DockPanel>
<TextBlock FontWeight="Bold"
Margin="0"
Width="250">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} ({1} jobs)">
<Binding Path="Name" />
<Binding Path="ItemCount" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock FontWeight="Bold"
Text="{Binding Path=Items[0].Category, StringFormat=T}" />
</DockPanel>
</Expander.Header>
<Expander.Content>
<ItemsPresenter />
</Expander.Content>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Items[0].Category}"
Value="ABC">
<Setter Property="Template"
Value="{StaticResource defaultGroup}" />
</DataTrigger>
</Style.Triggers>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
لا تنتمي إلى StackOverflow