當我創建WPF應用程序時,很快我的XAML開始膨脹。將XAML放入樣式中的策略是什麼?
然後以HTML/CSS的方式處理XAML /樣式問題,尋找重複的代碼並將其打包成我放入我的Window.Resources部分的樣式。
這是別人正在做的方式,還是現在有更好的方式在XAML中?看起來下面的兩個模塊只在兩個小詞上有區別,似乎我可以將它放在某種功能用戶控件(這是一個左側菜單),以便當我的菜單中有25個元素時我可以只有25行相同的名稱,也許點擊目標。
也許當我移動這MVVM這個問題會照顧自己與數據綁定(這是currrently只是一個硬編碼的原型),這樣我就可以在保持菜單項的名稱集合在我ViewModel然後它在ItemsControl中動態地創建菜單?
或臃腫的XAML文件只是生活中的事實與WPF應用程序?
當您創建WPF應用程序時,您有什麼樣的XAML樣式策略?
Window.Resources(文件的頂部):
<Window.Resources>
<Style x:Key="Link" TargetType="Button">
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Foreground" Value="#555"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<TextBlock TextDecorations="Underline"
Text="{TemplateBinding Content}"
Background="{TemplateBinding Background}"/>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
電流XAML:
<Expander HorizontalAlignment="Left" Header="File" VerticalAlignment="Top" ExpandDirection="Down" Width="200" Padding="2">
<Expander.Background>
<LinearGradientBrush>
<GradientStop Color="#bbb" Offset="0"/>
<GradientStop Color="#ccc" Offset="1"/>
</LinearGradientBrush>
</Expander.Background>
<Border CornerRadius="5">
<Border.Background>
<LinearGradientBrush>
<GradientStop Color="#ccc" Offset="0"/>
<GradientStop Color="#bbb" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Top">
<Button Click="buttonClose_Click"
Style="{StaticResource Link}"
Margin="10 3 3 3"
Content="Close">
</Button>
</StackPanel>
</Border>
</Expander>
<Expander HorizontalAlignment="Left" Header="Customers" VerticalAlignment="Top" ExpandDirection="Down" Width="200" Padding="2">
<Expander.Background>
<LinearGradientBrush>
<GradientStop Color="#bbb" Offset="0"/>
<GradientStop Color="#ccc" Offset="1"/>
</LinearGradientBrush>
</Expander.Background>
<Border CornerRadius="5">
<Border.Background>
<LinearGradientBrush>
<GradientStop Color="#ccc" Offset="0"/>
<GradientStop Color="#bbb" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top">
<Button Click="btnAppPage_Click"
Tag="CustomerAdd"
Style="{StaticResource Link}"
Margin="10 3 3 3"
Content="Create Customer"/>
</StackPanel>
</Border>
</Expander>
我一直在使用UserControls加載內容頁面(左側菜單是每個頁面是一個用戶控件),但不是頁面上的一點點重複,你只是指定義的用戶控件,如下所述:http: //msdn.microsoft.com/en-us/magazine/cc163421.aspx – 2009-04-08 08:49:55