我有一個程序集,其中我定義了幾種海關控件(基於現有的控件)與自己的風格。風格與自定義列表視圖不工作
對於他們所有我定義的靜態構造函數,我設置DefaultStyleKeyProperty並將樣式XAML文件添加到Themes/Generic.xaml。
它工作正常,除了我自定義ListView ..所有這些讓我瘋狂!
這裏是一個簡短的樣本:在Generic.xaml宣佈
public class EmListView : ListView
{
/// <summary>
/// Constructor
/// </summary>
static EmListView()
{
// Set the default style type
DefaultStyleKeyProperty.OverrideMetadata(typeof(EmListView), new FrameworkPropertyMetadata(typeof(EmListView)));
}
}
XAML文件:
<Style TargetType="{x:Type ui:EmListView}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.CanContentScroll" Value="True"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ui:EmListView}">
<Border Name="Border" Style="{DynamicResource EMLV_ListViewBorderStyle}" Margin="50">
<ScrollViewer Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}">
<ItemsPresenter />
</ScrollViewer>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsGrouping" Value="true">
<Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.3" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我不知道爲什麼,但也只有這樣,才能得到應用在我的EmListView我的風格在使用它時強制風格,如:
<ui:EmListView Margin="5" Style="{DynamicResource {x:Type ui:EmListView}}">
我有EmWindow,EmButton,..所有的應用風格自動除了ListView。有什麼特別的ListView?
謝謝。
編輯:
我看到的東西,它似乎是我的EmListView的引起麻煩的聲明。
這裏是一個窗口內的樣本聲明:
<ui:EmListView Margin="5">
<ui:EmListView.View>
<GridView>
<ui:EmSortableGridViewColumn Width="100" DisplayMemberBinding="{Binding artCode, Mode=OneWay}" SortPropertyName="artCode" Header="Code" IsDefaultSortColumn="True" />
<ui:EmSortableGridViewColumn Width="100" DisplayMemberBinding="{Binding artCode, Mode=OneWay}" SortPropertyName="artCode" Header="Code" IsDefaultSortColumn="True" />
<ui:EmSortableGridViewColumn Width="100" DisplayMemberBinding="{Binding artCode, Mode=OneWay}" SortPropertyName="artCode" Header="Code" IsDefaultSortColumn="True" />
<ui:EmSortableGridViewColumn Width="100" DisplayMemberBinding="{Binding artCode, Mode=OneWay}" SortPropertyName="artCode" Header="Code" IsDefaultSortColumn="True" />
</GridView>
</ui:EmListView.View>
</ui:EmListView>
風格不適用,它不斷地扔我一個警告說,它不能在樣式定義OverridesDefaultStyle屬性。
如果我只是聲明它是這樣的:
<ui:EmListView Margin="5" />
我沒有警告,我的風格是否設置正確。