private void OnBitChanged(BitItemModel bitModel, bool newValue) { var bit_vector = BitVector; if (bit_vector is Collections.BitVector32 vector32) { if (vector32[bitModel.BitIndex] != newValue) { vector32[bitModel.BitIndex] = newValue; BitVector = vector32; } } else if (bit_vector is Collections.BitVector64 vector64) { if (vector64[bitModel.BitIndex] != newValue) { vector64[bitModel.BitIndex] = newValue; BitVector = vector64; } } }
private void OnBitChanged(BitItemModel bitModel, bool newValue) { var bit_vector = BitVector; if (bit_vector == null) { return; } int bit_index = bitModel.BitIndex; if (bit_index >= bit_vector.Length) { throw new ArgumentOutOfRangeException(string.Format(Util.InvariantCultureInfo, "Vector length is {0} which is less than the number of bits needed to represent one or more items. #{1} can't be updated ({2})", bit_vector.Length, bit_index, bitModel.DisplayName)); } else if (bit_vector[bit_index] != newValue) { bit_vector[bit_index] = newValue; } }
private static void OnBitsUserInterfaceSourcePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var ctrl = (BitVectorControl)d; var source = (IBitVectorUserInterfaceData)e.NewValue; var newBitItems = new ObservableCollection <BitItemModel>(); if (source != null) { for (int bit_index = 0; bit_index < source.NumberOfBits; bit_index++) { var model = new BitItemModel { BitIndex = bit_index, DisplayName = source.GetDisplayName(bit_index), ToolTip = source.GetDescription(bit_index), IsVisible = source.IsVisible(bit_index) }; newBitItems.Add(model); } } ctrl.BitItems = newBitItems; }