1

MahApps.Metroに付属のアイコン セットのアイコンに塗りつぶしが設定された四角形があります。

これがコードです

<Rectangle x:Name="urlIcon" HorizontalAlignment="Left" Height="26" Margin="448,48,0,0" VerticalAlignment="Top" Width="28">
    <Rectangle.Fill>
       <VisualBrush Visual="{StaticResource appbar_warning}" />
    </Rectangle.Fill>
</Rectangle>

XAML デザインには、ユーザー入力の Web アドレスを取得する URL ボックスがあります。コード ビハインドでは、Web アドレスに到達可能かどうかを確認します。到達可能であれば、静的リソースを別のアイコン「appbar_check」に変更したいと思います。

URL ボックスのイベント メソッドを次に示します。urlExists は、URL のチェックを行う別のメソッドです。

private void urlBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    String url = ((TextBox)sender).Text;

    if (urlExists(url))
    {
        //change icon
     }
 }
4

3 に答える 3

3

以下のようにリソースにアクセスして四角形を埋めることができます

urlIcon.Fill = new VisualBrush() { Visual = (Visual)Resources["appbar_check"] };

また、リソースはUIElementであるため、それらを使用する <Canvas x:Shared="false" >には、キャンバスリソースに複数の場所を設定して、要求するたびに新しいリソースを返す必要があります。そうしないと、ビジュアルが既に他のコントロールの子であるというエラーが発生します。

于 2013-09-16T05:16:32.637 に答える
1

私はWPFの学習曲線にいるので、構文がわかりません。しかし、あなたはこのようなことを試すことができます。

urlIcon.Fill(new VisualBrush(...))

これがあなたを助けるか、あなたにアイデアを与えるかもしれません

于 2013-09-16T05:06:00.973 に答える
0

そのような用途には、DynamicResource を使用することをお勧めします。

于 2013-09-16T09:39:24.080 に答える