可能存在类似的问题,但似乎没有一个有用的问题。因此,我将尝试解释一个更具体的案例,看看是否有人可以帮助我。
我有一个带有渐变背景标签的应用程序。我使用XAML创建了渐变背景,我的程序将背景更改为精细,但我希望在用户单击“重置”按钮后将背景更改回“正常”。我该怎么做对wpf还是陌生的?XAML “ LinearGradientBrush x:Key =” headerBackground“中的代码是我想在后面的代码中访问的代码
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf" x:Class="ItemWrapPanel.MainWindow"
Title="MainWindow" Height="350" Width="600">
<Window.Resources>
**<LinearGradientBrush x:Key="headerBackground" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFEFEEEE" Offset="0"/>
<GradientStop Color="#E7E7E7E7" Offset="1"/>
</LinearGradientBrush>**
<LinearGradientBrush x:Key="selectedHeaderBackground" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#F6CD1D" Offset="0"/>
<GradientStop Color="#EBA32A" Offset="1"/>
</LinearGradientBrush>
</Window.Resources>
<Grid x:Name="MainGrid">
<Grid.RowDefinitions>
<RowDefinition x:Name="Row1"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="Col1"/>
<ColumnDefinition x:Name="Col2"/>
<ColumnDefinition x:Name="Col3"/>
</Grid.ColumnDefinitions>
<Label x:Name="Label1"
Content="Rock Properties"
Grid.Row="0"
Grid.Column="0"
MouseDoubleClick="Label1_MouseDoubleClick"
Background="{DynamicResource headerBackground}"
VerticalAlignment="Top"/>
<Label x:Name="Label2"
Content="Contacts"
Grid.Column="1"
Grid.Row="0"
Background="{DynamicResource headerBackground}"
MouseDoubleClick="Label2_MouseDoubleClick"
Margin="0,0,0,282"
VerticalAlignment="Top"/>
<Label x:Name="Label3"
Content="Fluid Properties"
Grid.Column="2"
Background="{DynamicResource headerBackground}"
Grid.Row="0"
MouseDoubleClick="Label3_MouseDoubleClick"
Margin="0,0,0,282"
VerticalAlignment="Top"/>
<Button x:Name="Resetbtn" Content="Reset" HorizontalAlignment="Left" Margin="0,70,0,0" VerticalAlignment="Top" Width="75" Click="Reset_Click" Background="{DynamicResource selectedHeaderBackground}"/>
<Button Name="CloseRock" Content="X" HorizontalAlignment="Left" Margin="173,4,0,0" VerticalAlignment="Top" Width="24" Grid.Column="0"/>
<Button Name="CloseContacts" Content="X" HorizontalAlignment="Left" Margin="174,2,0,0" VerticalAlignment="Top" Width="24" Grid.Column="1"/>
<Button Name="CloseFluid" Content="X" HorizontalAlignment="Left" Margin="173,2,0,0" VerticalAlignment="Top" Width="24" Grid.Column="2"/>
</Grid>
C#
private ColumnDefinition SelectedColumn;
private Color selectedHeaderBackground = (Color)ColorConverter.ConvertFromString("#EBA32A");
public MainWindow()
{
InitializeComponent();
}
private void Label1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
SelectedColumn = Col1;
SetCol1Header();
SetColumnWidth();
SetColumnWidthCol1();
}
private void Label2_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
SelectedColumn = Col2;
SetCol2Header();
SetColumnWidth();
SetColumnWidthCol2();
}
private void Label3_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
SelectedColumn = Col3;
SetCol3Header();
SetColumnWidth();
SetColumnWidthCol3();
}
public void SetColumnWidth()
{
SelectedColumn.Width = new GridLength(1, GridUnitType.Star);
}
private void Reset_Click(object sender, RoutedEventArgs e)
{
ResetHeaderBackground();
ResetColumnWidth();
ResetColumns();
}
private void ResetColumns()
{
Label1.Visibility = System.Windows.Visibility.Visible;
}
private void ResetColumnWidth()
{
Col1.Width = new GridLength(1, GridUnitType.Star);
Col2.Width = new GridLength(1, GridUnitType.Star);
Col3.Width = new GridLength(1, GridUnitType.Star);
}
private void ResetHeaderBackground()
{
//Label3.Background = new SolidColorBrush(HeaderBackground);
//Label2.Background = new SolidColorBrush(HeaderBackground);
//Label1.Background = new SolidColorBrush(HeaderBackground);
}
private void MinimiseRock_Click(object sender, RoutedEventArgs e)
{
MinimiseWindow();
}
private void MinimiseContacts_Click(object sender, RoutedEventArgs e)
{
MinimiseWindow();
}
private void MinimiseFluid_Click(object sender, RoutedEventArgs e)
{
MinimiseWindow();
}
private void MinimiseWindow()
{
this.WindowState = WindowState.Minimized;
}
private void SetCol1Header()
{
Label1.Background = new SolidColorBrush(selectedHeaderBackground);
}
private void SetCol2Header()
{
Label2.Background = new SolidColorBrush(selectedHeaderBackground);
}
private void SetCol3Header()
{
Label3.Background = new SolidColorBrush(selectedHeaderBackground);
}
private void SetColumnWidthCol1()
{
Col2.Width = new GridLength(150);
Col3.Width = new GridLength(150);
}
private void SetColumnWidthCol2()
{
Col1.Width = new GridLength(150);
Col3.Width = new GridLength(150);
}
private void SetColumnWidthCol3()
{
Col1.Width = new GridLength(150);
Col2.Width = new GridLength(150);
}
}
您可以通过调用FindResource提供您为Brush设置的键(然后将其强制转换为LinearGradientBrush)来访问窗口的资源。
this.Label1.Background = (LinearGradientBrush)this.FindResource("headerBackground")
欢呼声。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句