通过在某些自定义控件样式中设置个人值,可以使用哪种方法使用户能够定义自己的应用程序首选项?
我们可以在设计时在XAML中设置它们:
<UserControl.Resources>
<Style TargetType="{x:Type cc:MyControl}">
<Setter Property="SWidth" Value="20" />
...
<Setter Property="SBrush" Value="Blue" />
</Style>
</UserControl.Resources>
但是如何在运行时编辑这些样式值?
答案 0 :(得分:1)
您需要将样式中的值绑定到某个静态类 - 例如,应用程序的默认设置 - 可以通过任何类修改值来修改值。
在下面的应用中,我在FontSize
文件中创建了一个名为Settings.settings
的属性。我在XAML文件中添加了相应的命名空间,现在可以根据需要绑定到它:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:WpfApplication1"
xmlns:prop="clr-namespace:WpfApplication1.Properties"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.Resources>
<Style TargetType="TextBlock" x:Key="myStyle">
<Setter Property="FontSize" Value="{Binding FontSize, Source={x:Static prop:Settings.Default}}" />
</Style>
</Grid.Resources>
<TextBlock Style="{DynamicResource myStyle}" Text="The quick brown fox jumped over the lazy dog." />
<TextBox Grid.Row="1" Text="{Binding FontSize, Source={x:Static prop:Settings.Default}, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</Window>
我将值直接绑定到TextBox
,但不言而喻,强烈建议在视图模型中使用某种控制机制。
最后,如果要保存设置,您只需调用类的Save
方法,例如,在应用程序的Exit
事件的事件处理程序中:
private void Application_Exit(object sender, ExitEventArgs e)
{
WpfApplication1.Properties.Settings.Default.Save();
}