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
来转换数据。但当我更改数据并调用函数属性时,它没有调用classConvertImage
,也没有提醒数据
以下是我的代码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/>