Я хочу создать элемент управления WPF, который позволяет манипулировать определенными битами в байте (разметка прикреплена к нижней части этого сообщения).Состав элементов управления WPF
Он должен использоваться следующим образом
<ns:BitManipulator BitByte={Binding Path=...} />
, но я не могу понять, как организовать (многолетние) привязки, чтобы следующие три значения то же самое: а) байты-значения в модели, что BitByte будет связан с б) байт-значение BitByte, которые либо должны обновить свою ценность, если либо ценность модели или ценность BitVector меняет C) бит-Представление BitByte в TextBoxes имени order_i
Любой намек на приложение reciated
XAML
<UserControl x:Class="WpfLib.StackOverflow.BitManipulator"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBox Name="order_0" Grid.Column="0" />
<TextBox Name="order_1" Grid.Column="1" />
<TextBox Name="order_2" Grid.Column="2" />
<TextBox Name="order_3" Grid.Column="3" />
<TextBox Name="order_4" Grid.Column="4" />
<TextBox Name="order_5" Grid.Column="5" />
<TextBox Name="order_6" Grid.Column="6" />
<TextBox Name="order_8" Grid.Column="7" />
</Grid>
</UserControl>
C# код позади
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Markup;
namespace WpfLib.StackOverflow
{
[ContentProperty("BitByte")]
public partial class BitManipulator : UserControl
{
public static DependencyProperty BitByteProperty =
DependencyProperty.Register
(
"BitByte",
typeof(Byte),
typeof(BitManipulator),
new PropertyMetadata(null)
);
public BitManipulator()
{
InitializeComponent();
}
public Byte BitByte
{
get { return (Byte)GetValue(BitByteProperty); }
set { SetValue(BitByteProperty, value); }
}
}
}
Я не уверен, что это то, что нуждается в ОП. Насколько я понимаю, ему нужна сборка адаптеров (оболочка 'INotifyCollectionChanged' над свойством байта), которая позволит проецировать изменения в базовом байте на элементы управления бит и наоборот. –
Многосвязывание - хороший способ для отдельных свойств. – Neil
Все три свойства имеют один и тот же источник, поэтому многосвязывание не требуется. На самом деле есть только одно значение, которое повлияет на все упомянутые свойства. –