, который начинается с
Код: Выделить всё
Код: Выделить всё
public int FrameThickness
{
get { return (int)GetValue(FrameThicknessProperty); }
set { SetValue(FrameThicknessProperty, value); }
}
public static readonly DependencyProperty FrameThicknessProperty =
DependencyProperty.Register(nameof(FrameThickness), typeof(int), typeof(RectZone), new PropertyMetadata(1));
public string Title
{
get { return (string)GetValue(TitleProperty); }
set { SetValue(TitleProperty, value); }
}
public static readonly DependencyProperty TitleProperty =
DependencyProperty.Register(nameof(Title), typeof(string), typeof(RectZone), new PropertyMetadata("title"));
public ImageBrush? ZoneImage
{
get { return (ImageBrush)GetValue(ZoneImageProperty); }
set { SetValue(ZoneImageProperty, value); }
}
public static readonly DependencyProperty ZoneImageProperty =
DependencyProperty.Register(nameof(ZoneImage), typeof(ImageBrush), typeof(RectZone), new PropertyMetadata(null));
public Visibility LogVisibility
{
get { return (Visibility)GetValue(LogVisibilityProperty); }
set { SetValue(LogVisibilityProperty, value); }
}
public static readonly DependencyProperty LogVisibilityProperty =
DependencyProperty.Register(nameof(LogVisibility), typeof(Visibility), typeof(RectZone), new PropertyMetadata(Visibility.Visible));

текстовая версия для одного из них:
Код: Выделить всё
Severity: Error
Count: 4
Data Context: Visibility
Binding Path: TitleVisibility
Target: RectZone.TitleVisibility
Target Type: Visibility
Description File: TitleVisibility property not found on object of type Visibility
Я использую RectZone в другом пользовательском элементе управления, ProjectVarioView
code>, который присутствует в коде следующего кода.
Там у меня есть несколько RectZone, определенных в ViewModel, но я установил привязку данных в коде:
Похоже, что все ошибки связаны с привязкой данных (всего 7), которую я установил в SetGrid и AddZone:
Код: Выделить всё
private void ViewModelChanged(object? sender, PropertyChangedEventArgs e)
{
if(e.PropertyName != nameof(ViewModel)) return;
SetGrid(GridZonesContainer, ViewModel.CompoConf.Cols, ViewModel.CompoConf.Rows, MarginWidth);
}
private void SetGrid(Grid gridBase, int cols, int rows, int marginWidth)
{
cols = cols * 2 + 1;
rows = rows * 2 + 1;
var star = new GridLength(1, GridUnitType.Star);
var margin = new GridLength(marginWidth);
var marginBinding = new Binding("MarginWidth") { Source = ViewModel.Margins, Mode = BindingMode.TwoWay };
gridBase.SetBinding(MarginWidthProperty, marginBinding);
for (int x = 0; x < cols; x++)
gridBase.ColumnDefinitions.Add(new ColumnDefinition
{ Width = x % 2 != 0 ? star : margin });
for (int y = 0; y < rows; y++)
gridBase.RowDefinitions.Add(new RowDefinition
{ Height = y % 2 != 0 ? star : margin });
for (int x = 1, datax = 0; x < cols; x += 2, datax++)
for (int y = 1, datay = 0; y < rows; y += 2, datay++)
AddZone(x, y, datax, datay);
}
private void AddZone(int gridx, int gridy, int datax, int datay)
{
//ZoneImage = "{Binding ZonesData[gridx, gridy].Image, Mode=TwoWay}"
//Title = "{Binding ZonesData[gridx, gridy].Title, Mode=TwoWay}"
//TitleVisibility = "{Binding TitleVisibility, UpdateSourceTrigger=PropertyChanged}"
//GuideVisibility = "{Binding GuideVisibility}"
//LogVisibility = "{Binding LogVisibility}"
//DebugMode = "{Binding DebugMode, Mode=TwoWay}" />
var mz = new RectZone();
var imageBinding = new Binding("Image") {Source = ViewModel.ZonesData[datax, datay].LastVignette, Mode = BindingMode.TwoWay};
mz.SetBinding(RectZone.ZoneImageProperty, imageBinding);
var titleBinding = new Binding("Title") {Source = ViewModel.ZonesData[datax, datay].Name, Mode = BindingMode.TwoWay };
mz.SetBinding(RectZone.TitleProperty, titleBinding);
var titleVisibilityBinding = new Binding("TitleVisibility") { Source = ViewModel.TitleVisibility };
mz.SetBinding(RectZone.TitleVisibilityProperty, titleVisibilityBinding);
var guideVisibilityBinding = new Binding("GuideVisibility") { Source = ViewModel.GuideVisibility };
mz.SetBinding(RectZone.GuideVisibilityProperty, guideVisibilityBinding);
var logVisibilityBinding = new Binding("LogVisibility") { Source = ViewModel.LogVisibility };
mz.SetBinding(RectZone.LogVisibilityProperty, logVisibilityBinding);
var debugModeBinding = new Binding("DebugMode") { Source = ViewModel.DebugMode, Mode = BindingMode.OneWay };
mz.SetBinding(RectZone.DebugModeProperty, debugModeBinding);
GridZonesContainer.Children.Add(mz);
Grid.SetRow(mz, gridy);
Grid.SetColumn(mz, gridx);
_ZonesList.Add(mz);
}
Код: Выделить всё
public ZoneViewModel[,] ZonesData
{
get => _zonesData;
set
{
if (Equals(value, _zonesData)) return;
_zonesData = value;
OnPropertyChanged();
}
}
Код: Выделить всё
public Visibility TitleVisibility
{
get => _titleVisibility;
set
{
if (value == _titleVisibility) return;
_titleVisibility = value;
OnPropertyChanged();
}
}
public Visibility GuideVisibility
{
get => _guideVisibility;
set
{
if (value == _guideVisibility) return;
_guideVisibility = value;
OnPropertyChanged();
}
}
public Visibility LogVisibility
{
get => _logVisibility;
set
{
if (value == _logVisibility) return;
_logVisibility = value;
OnPropertyChanged();
}
}
Код: Выделить всё
public interface IMediaViewModel : INotifyPropertyChanged
{
public StopwatchBag Sw { get; }
public Uri URI { get; }
public ImageSize ImageSize { get; set; }
public string Name { get; set; }
public string Filepath { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
public long SizeBytes { get; set; }
public ImageBrush LastVignette { get; set; }
public IReadOnlyList? Metadata { get; set; }
public bool HasMetadata { get; }
public bool HasVignettes { get; }
public Dictionary MetaDic { get; }
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ode-behind
Мобильная версия