У нас есть различные иконки в виде XAML ресурсов в прикладном что-то вроде этого:WPF: Не в состоянии установить цвет ресурса посредством связывания
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DrawingBrush x:Key="My_Icon">
<DrawingBrush.Drawing>
<GeometryDrawing Brush="Gray"> <!--I want to set this Brush here using binding-->
<GeometryDrawing.Geometry>
<GeometryGroup>
<EllipseGeometry Center="50,50" RadiusX="45" RadiusY="20" />
<EllipseGeometry Center="50,50" RadiusX="20" RadiusY="45" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
И мы используем эти ресурсы в другом XAML файл (загрузить этот ресурс в коде позади, обратитесь к приведенной ниже код)
public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
var resource = Application.Current.FindResource("My_Icon");
this.MyBrush = resource as DrawingBrush;
NewBrush = Brushes.Blue;
this.DataContext = this;
}
private DrawingBrush _myBrush;
public DrawingBrush MyBrush
{
get { return _myBrush; }
set { _myBrush = value; }
}
private Brush _newBrush;
public Brush NewBrush
{
get { return _newBrush; }
set { _newBrush = value; }
}
}
проблема есть, я не в состоянии установить цвет значка (в коде ресурса, первый фрагмент кода) с помощью связывание с имуществом, которое находится в ViewModel (MyBrush собственности в этом случае в Window2 коде позади)
Я попытался с следующим кодом в файле ресурсы:
<GeometryDrawing Brush="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Rectangle}, Path=NewBrush}">
Но это не работает. Что мне здесь не хватает.
Вы включили в словарь ресурсов? – Caramiriel
Да. Это я и сделал. Это рабочий образец с серым цветом, который я установил. Все, что я хочу сделать, это установить этот цвет с привязкой. – Randeep
Я не уверен, что вы пытаетесь сделать здесь. Судя по вашему последнему фрагменту кода, вы пытаетесь связать свойство 'GeomertyDrawing.Brush' с свойством' Window2.MyBrush', которое содержит '" ', который, в свою очередь, является родителем «GeometryDrawing» - это приводит к циклической зависимости и, безусловно, приведет к исключению ... –
Grx70