0

長方形、楕円、2 つのスライダー、テキストブロックを含む単純なページがあります。

2 つのスライダーは、(バインドを介して) 四角形の高さと幅を制御します。

長方形の寸法の最小値に基づいて、楕円の幅と高さを設定したいと思います。XAML コードは次のようになります。

<UserControl
x:Class="App16.MyUserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App16"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="400"
d:DesignWidth="400"
x:Name="MyRoot">   

<Grid Background="Black">

    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="2*" />
        <RowDefinition />
    </Grid.RowDefinitions>

    <Rectangle Name="rect" Fill="Yellow" 
               Width="{Binding ElementName=rectX,Path=Value}" 
               Height="{Binding ElementName=rectY,Path=Value}" Grid.Column="0"/>

    <Ellipse Fill="Yellow" 
             Width="{Binding ElementName=MyRoot,Path=SampleFunction}" 
             Height="{Binding ElementName=MyRoot,Path=SampleFunction}" Grid.Column="1" />

    <StackPanel Grid.Row="1" Grid.ColumnSpan="2">                       
        <Slider Name="rectX" HorizontalAlignment="Stretch" Minimum="100" Maximum="200" Value="150" />
        <Slider Name="rectY" HorizontalAlignment="Stretch" Minimum="100" Maximum="200" Value="150" />
        <TextBlock Foreground="White" Text="{Binding ElementName=MyRoot, Path=SampleFunction}" />
    </StackPanel>

</Grid>

コードビハインドは次のようになります。

public Double SampleFunction {             
        get { return (rect.Width <= rect.Height ? rect.Width : rect.Height); }
    }

現在の状態では、四角形はスライダーの値に従って適切にサイズ変更されますが、ページが読み込まれた後に「SampleFunction」が呼び出されることはありません。

もちろん、「RESIZED」イベントでこれを行うこともできましたが、それを行わなくてもこれが可能だったのではないかと思います。

助言がありますか?ユーザーがスライダー コントロールを調整すると、四角形と楕円形のサイズが変更されます。

ありがとう!

4

2 に答える 2

1

私のコメントでのヘンクの提案はそれを機能させるでしょうが、実際にはあなたのシナリオではバインディングを完全に削除して単純に設定することができます

<Ellipse
    Fill="Yellow"
    VerticalAlignment="Stretch"
    HorizontalAlignment="Stretch"
    Stretch="Uniform" />
于 2013-04-10T19:14:19.157 に答える