簡體   English   中英

使用綁定c#WPF結束鼠標時更改圖像

[英]Change Image when mouse is over with Binding c# WPF

我正在WPF中執行一個程序,該程序在網格中放置了不同的矩形。 它們都有一個imagesource綁定,使圖像在整個程序中動態變化。 它類似於2048。問題是,現在我想讓此矩形在鼠標懸停在其上方時更改其圖像源。 就像我已經做過圖像源綁定一樣,我不知道該怎么做。

<ListBox Grid.Row="1" ItemsSource="{Binding Tiles}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border  Background="{Binding Converter={StaticResource BackgroundColor2048Converter}}" Width="106.25px" Height="106.25px" CornerRadius="3"  BorderThickness="1" VerticalAlignment="Stretch" Focusable="False" HorizontalAlignment="Stretch" Margin="7">
                        <Rectangle Width="104.25px" Height="104.25px" MouseEnter="Rectangle_MouseEnter" MouseLeave="Rectangle_MouseLeave" >
                            <Rectangle.Fill>
                                <ImageBrush ImageSource="{Binding Converter={StaticResource ImageBackgroundColor2048Converter}, Mode=OneWay}"/>
                            </Rectangle.Fill>
                        </Rectangle>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

這是有關矩形的xaml代碼。 圖像源轉換器可以工作,並用於在游戲過程中更改圖像。 但是現在我也想在mouseenter事件觸發時更改該圖像。 那就是我完全不知道該怎么做的地方。

您可以通過觸發器執行此操作:

 <Rectangle Width="104.25px" Height="104.25px" MouseEnter="Rectangle_MouseEnter" MouseLeave="Rectangle_MouseLeave" >
    <Rectangle.Style>
        <Style TargetType="{x:Type Rectangle}">
            <Setter Property="Fill" >
                <Setter.Value>
                        <ImageBrush ImageSource="{Binding Converter={StaticResource ImageBackgroundColor2048Converter}, Mode=OneWay}"/>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="Rectangle.IsMouseOver" Value="True">
                    <Setter Property="Fill" >
                        <Setter.Value>
                             <!-- Whatever you want here -->
                            <ImageBrush ImageSource="{Binding MouseOverImageUri}" /> 
                        </Setter.Value>
                    </Setter>
                </Trigger>
        </Style>
    </Rectangle.Style>
</Rectangle>

請注意,您必須通過樣式設置默認值。 這樣做的原因是觸發器會覆蓋樣式,但是直接應用的屬性會覆蓋觸發器。 在這種情況下,您希望觸發器獲勝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM