2014-07-13 110 views
0

我正在玩第三方包裹製圖(Modern UI Charts)。它看起來很棒,似乎能夠滿足我的需求。修改混合中的視覺狀態?

但是在包裝附帶的示例代碼中,所有樣式和模板均位於Generic.xaml的資源字典中,因爲它們都是自定義(不可見)控件。

但我想覆蓋很多Generic.xaml文件中的內容,包括一些視覺狀態。具體來說,在我想要使用的圖表中,它會生成動畫,然後在任何數據發生變化時進行動畫處理。我想關掉它。

如果我嘗試在blend中編輯模板或樣式,我會看到一些來自默認xaml的代碼,但不是視覺狀態。有沒有辦法修改這些?

或者我該如何完全覆蓋Generic.xaml並將其替換爲我自己的?

+0

你是否繼承了控件?或者只是想重新定義樣式和模板? – pushpraj

+0

只是想重新定義樣式和模板 - 特別是關閉那個視覺狀態,如果我可以...... – Nicros

回答

1

很容易,當你繼承的控制,並通過DefaultStyleKeyProperty.OverrideMetadata

創建自己的我不知道你實現覆蓋。通常如果您爲相關類型創建樣式,則會覆蓋現有的樣式,除非您使用BasedOn屬性。

例如

<Style TargetType="local:PieChart" BasedOn="{StaticResource BaseChartStyle}"> 
    <Setter Property="ChartAreaStyle" Value="{StaticResource PieChartChartAreaStyle}" /> 
    <Setter Property="PlotterAreaStyle" Value="{StaticResource PieChartPlotterAreaStyle}" /> 
</Style> 

,如果你從現有的樣式導出的元素上面redfine作爲

<Style TargetType="local:PieChart" > 
    ... your style 
</Style> 

它將取代現有的樣式

,或者你可以選擇覆蓋特定財產通過BasedOn="{StaticResource {x:Type local:PieChart}}"

<Style TargetType="local:PieChart" BasedOn="{StaticResource {x:Type local:PieChart}}"> 
    <Setter Property="ChartAreaStyle" Value="{StaticResource MyChartAreaStyle}" /> 
</Style> 

用類似的方法,你可以用你自己的版本覆蓋你想要的元素的屬性Template