0

プロジェクトにスライダーを含むユーザーコントロールのインスタンスがあります。RichTextBoxコントロールのScaleTransformをスライダーの値にバインドしたいのですが、適切に参照する方法がわかりません。ユーザーコントロールはツールバーと呼ばれ、その中のスライダーはスケールと呼ばれます。これは私がこれまでに試したことです。

<RichTextBox x:Name="body" 
                 SelectionChanged="body_SelectionChanged"
                 SpellCheck.IsEnabled="True"
                 AcceptsReturn="True" AcceptsTab="True"
                 BorderThickness="0 2 0 0">
        <RichTextBox.LayoutTransform>
            <ScaleTransform ScaleX="{Binding ElementName=toolbar.Scale, Path=Value}" ScaleY="{Binding ElementName=toolbar.Scale, Path=Value}"/>
        </RichTextBox.LayoutTransform>
    </RichTextBox>

バインディングに問題があるため、.csファイルでも試してみましたが、スライダーイベントが発生した後、実際に変換値を設定する方法を理解できませんでした。

4

1 に答える 1

1

他のコントロール内の名前を参照することはできません。それらは別の名前スコープにあります。スライダーの値が必要な場合は、それを のプロパティにバインドしますUserControl

UserControlコード(あなたのケースでそのクラスが呼び出される可能性があるものは何でも):

<!-- ToolBar.xaml -->
<UserControl ...
             Name="control">
    <!-- ... -->
    <Slider Value="{Binding ScaleValue, ElementName=control}" ... />
    <!-- ... -->
</UserControl>
// ToolBar.xaml.cs
public partial class ToolBar : UserControl
{
    public static readonly DependencyProperty ScaleValueProperty =
        DependencyProperty.Register("ScaleValue", typeof(double), typeof(ToolBar));
    public double ScaleValue
    {
        { get { return (double)GetValue(ScaleValueProperty); }
        { set { SetValue(ScaleValueProperty, value); }
    }
}

新しいバインディング コード:

<ScaleTransform ScaleX="{Binding ElementName=toolbar, Path=ScaleValue}" ... />
于 2012-07-30T00:33:55.467 に答える