Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用事件属性更改时不重新绑定_C#_Wpf_Data Binding - Fatal编程技术网

C# 调用事件属性更改时不重新绑定

C# 调用事件属性更改时不重新绑定,c#,wpf,data-binding,C#,Wpf,Data Binding,我的应用程序中有一个椭圆,里面填充了一个图像笔刷。我正在尝试绑定ImageBrush.ImageSource,并在单击椭圆时对其进行更改。我正在使用类ConvertImage,它实现了IValueConverter来转换数据。但当我更改数据并调用函数属性时,它没有调用classConvertImage,也没有提醒数据 以下是我的代码Xaml: <Window x:Class="CoffeeManager.Controls.CategoryControl.CategoryAddFoodFor

我的应用程序中有一个
椭圆
,里面填充了一个
图像笔刷
。我正在尝试绑定
ImageBrush.ImageSource
,并在单击
椭圆时对其进行更改。我正在使用类
ConvertImage
,它实现了
IValueConverter
来转换数据。但当我更改数据并调用函数属性时,它没有调用class
ConvertImage
,也没有提醒数据

以下是我的代码Xaml:

<Window x:Class="CoffeeManager.Controls.CategoryControl.CategoryAddFoodForm"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:CoffeeManager.Controls.CategoryControl"
        xmlns:coffeeManager="clr-namespace:CoffeeManager"
        xmlns:foodView="clr-namespace:CoffeeManager.Controls.FoodControl"
        mc:Ignorable="d"
        Style="{StaticResource WindowStyle}"
        Title="Add Food To Categoory" Height="600" Width="1000" Background="#1e1e1e" Loaded="CategoryAddFoodForm_OnLoaded">
    <Grid>
        <Grid.Resources>

            <coffeeManager:ConvertImage x:Key="ConvertImage"/>

        </Grid.Resources>

        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="150"/>
                <ColumnDefinition Width="150"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <Ellipse Grid.Column="1" Margin="10" StrokeThickness="2" Stroke="White" MouseDown="UIElement_OnMouseDown">
                <Ellipse.Fill>
                    <ImageBrush Stretch="Uniform" ImageSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:CategoryViewForm}}, Path=Category.Image, Converter={StaticResource ConvertImage}, UpdateSourceTrigger=PropertyChanged}"/>
                </Ellipse.Fill>
            </Ellipse>
        </Grid>
    </Grid>
</Window>

我认为你把事情弄得很复杂

首先,在顶部窗口元素的Xaml中设置一个名称-例如CategoryAddFoodFormWindow:

<Window x:Class="CoffeeManager.Controls.CategoryControl.CategoryAddFoodForm" ... x:Name="CategoryAddFoodFormWindow">
并将对话框中的值直接设置为该属性,而不是使用转换器类:

<ImageBrush Stretch="Uniform" ImageSource="{Binding ElementName=CategoryAddFoodFormWindow, Path=CategoryImage/>

我觉得你把事情弄得很复杂

首先,在顶部窗口元素的Xaml中设置一个名称-例如CategoryAddFoodFormWindow:

<Window x:Class="CoffeeManager.Controls.CategoryControl.CategoryAddFoodForm" ... x:Name="CategoryAddFoodFormWindow">
并将对话框中的值直接设置为该属性,而不是使用转换器类:

<ImageBrush Stretch="Uniform" ImageSource="{Binding ElementName=CategoryAddFoodFormWindow, Path=CategoryImage/>

类别
是否实现了
INotifyPropertyChanged
?您应该包括该类的代码。
Category
是否实现了
INotifyPropertyChanged
?您应该包含该类的代码。
public ImageSource CategoryImage { set; get; }
<ImageBrush Stretch="Uniform" ImageSource="{Binding ElementName=CategoryAddFoodFormWindow, Path=CategoryImage/>