【发布时间】:2010-01-29 17:15:40
【问题描述】:
我正在尝试从也包含在该窗口中的用户控件中获取包含在窗口中的滑块的值。
这就是我想要完成的。
<Window x:Class="TestApp3.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1">
<Window.Resources>
<Style x:Key="SliderStyle" TargetType="{x:Type Slider}">
<Setter Property="Value" Value="10" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Interval" Value="1" />
<Setter Property="Minimum" Value="5" />
<Setter Property="Maximum" Value="50" />
<Setter Property="TickFrequency" Value="0.25" />
<Setter Property="IsSnapToTickEnabled" Value="True" />
<Setter Property="Width" Value="100" />
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="FontSize" Value="{Binding ElementName=SliderFont, Path=Value}" />
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Grid.Row="0" Text="Test" />
<Border
Grid.Row="1"
Background="Purple"
BorderBrush="Black"
BorderThickness="1"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
FontSize="16"
Content="Font Size:"/>
<TextBox
Grid.Column="1"
FontSize="16"
Text="{Binding ElementName=SliderFont, Path=Value, Mode=TwoWay}"
Width="50"
MaxLength="5" />
<Slider
Style="{DynamicResource SliderStyle}"
Grid.Column="2"
Name="SliderFont" />
</Grid>
</Border>
</Grid>
</Window>
同样的想法,但使用了用户控件。
<Window x:Class="TestApp3.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestApp3"
Title="Window1">
<Window.Resources>
<Style x:Key="SliderStyle" TargetType="{x:Type Slider}">
<Setter Property="Value" Value="10" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Interval" Value="1" />
<Setter Property="Minimum" Value="5" />
<Setter Property="Maximum" Value="50" />
<Setter Property="TickFrequency" Value="0.25" />
<Setter Property="IsSnapToTickEnabled" Value="True" />
<Setter Property="Width" Value="100" />
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="FontSize" Value="{Binding ElementName=SliderFont, Path=Value}" />
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<!--<TextBox Grid.Row="0" Text="Test" />-->
<local:myusercontrol Grid.Row="0" />
<Border
Grid.Row="1"
Background="Purple"
BorderBrush="Black"
BorderThickness="1"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
FontSize="16"
Content="Font Size:"/>
<TextBox
Grid.Column="1"
FontSize="16"
Text="{Binding ElementName=SliderFont, Path=Value, Mode=TwoWay}"
Width="50"
MaxLength="5" />
<Slider
Style="{DynamicResource SliderStyle}"
Grid.Column="2"
Name="SliderFont" />
</Grid>
</Border>
</Grid>
</Window>
用户控件
<UserControl x:Class="TestApp3.myusercontrol"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TextBox Text="Test" />
</Grid>
</UserControl>
用户控件文本框字体大小根本没有增长。我想让这个工作的原因是因为我想把类似的东西放在我们的主题中,这样我们以后就不用担心了。我一直在修补这个太久了。关于如何使这项工作发挥作用的任何想法都会很棒。
我知道我可以在用户控件中传递 FontSize 值,但我希望能够控制多个控件 FontSize。
希望这是有道理的, ~靴子
【问题讨论】: