我有一个DataGrid
:
<DataGrid Grid.Row="4" Name="grvAllCry" Margin="5,5,5,5" ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Rank" Width="10*" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Rank}" Foreground="#46BF6E"></Label>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
如您所见,我将Foreground
行的DataGrid
设置为“#46BF6E”。但是我有很多DataGrid
,我想重用这个变量。像这样:
public static class Config
{
public static string MyGreen = "#46BF6E";
public static string MyRed = "#D14836";
public static string MyBlue = "#428BCA";
}
有没有办法创建类似的类并在许多不同的xaml文件中使用它的变量?例如:
<Label Content="{Binding Rank}" Foreground="MyGreen"></Label>
在xaml文件中时,我不知道如何从.cs文件中调用变量,请帮助我。
答案 0 :(得分:1)
您可以在定义ResourceDictionary
资源的地方创建一个新的Brush
:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="myBrush" Color="#46BF6E"/>
</ResourceDictionary>
如果您希望能够在整个应用程序中引用此资源,则可以将该资源字典合并到您的App.xaml
中:
<Application x:Class="WpfApp1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
...并使用StaticResource
标记扩展名从任何视图引用资源:
<Label Content="{Binding Rank}" Foreground="{StaticResource myBrush}"></Label>
答案 1 :(得分:1)
可以使用static
扩展名引用const
属性或字段(包括{x:Static ...}
字段)。对于Config
类,应为:
<Label Content="{Binding Rank}" Foreground="{x:Static myNameSpace:Config.MyGreen}"/>
xaml文件应包含Config类(xmlsns:myNameSpace="...."
)的名称空间定义
但是,可重用元素通常定义为“资源”。在应用程序中可见的资源在App.xaml中定义:
<Application.Resources>
<SolidColorBrush x:Key="MyGreen" Color="#46BF6E"/>
<SolidColorBrush x:Key="MyRed" Color="#D14836"/>
<SolidColorBrush x:Key="MyBlue" Color="#428BCA"/>
</Application.Resources>
可以从StaticResource
/ DynamicResource
扩展名使用此类资源:
<Label Content="{Binding Rank}" Foreground="{StaticResource MyGreen}"/>