検索してみましたが、検索するのに適切な用語を使用していない可能性があります。
使用しているいくつかのテキストボックスがあり、データを入力すると、デバッグ時に値が更新されていることがわかりますが、フォームに更新されることはありません。
基本的に、ビジュアルに使用されるフォームがあり、すべてのアクティビティを処理するクラスがあります。クラスをリソースとして作成し、テキスト ボックス内のリソースを参照しています。
フォームの更新を処理する方法を本当に知っていた唯一の方法は、値の変更に関する計算を実装することでした。したがって、プロパティを更新した場合は、OnPropertyChanged() からメソッドを呼び出しました。これにより、計算によって値が書き換えられるため、値が常に変更されていたため、問題が発生していました。次に、新しい値の変化を評価してみました
IE
public double In1
{
get{_return _in1;}
set{
if (_in1 != value)
_in1 = value;
OnPropertyChanged("In1");
}
}
何があっても、私の問題は、値がテキストボックスに書き込まれるのを見ないことです。これは、データバインディングを使用する私の最初の実際の取り組みであるため、何か間違ったことを(明らかに)行っていると想定しています
<ad:DockableContent
xmlns="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="DMC_Robot_Editor.GUI.frmAngleConvertor"
Title="frmAngleConvertor" Height="259" Width="282">
<ad:DockableContent.Resources>
<local:AngleConvertor x:Key="Converter"/>
</ad:DockableContent.Resources>
<Grid >
<GroupBox HorizontalAlignment="Stretch" VerticalAlignment="Top">
<Grid>
<ComboBox x:Name="cbInput" HorizontalAlignment="Stretch" VerticalAlignment="Top" Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="1" DisplayMemberPath="ValueCartesianString" SelectedValuePath="ValueCartesianEnum" IsSynchronizedWithCurrentItem="True" SelectedIndex="{Binding InputItem,Source={StaticResource Converter}}" ItemsSource="{Binding InputConvention, Source={StaticResource Converter}}" IsReadOnly="True"/>
<TextBox x:Name="tbIn1" HorizontalAlignment="Center" VerticalAlignment="Bottom" Text="{Binding In1, Converter={StaticResource DoubleToStringConverter}, Source={StaticResource Converter}}" Grid.Column="0" d:LayoutOverrides="GridBox" Grid.Row="2" Width="50" TextAlignment="Center">
<TextBox.DataContext>
<local:AngleConvertor/>
</TextBox.DataContext> </Grid>
</ad:DockableContent>
public class AngleConverter()
{
private double _in1 = 0.0;
public double In1
{
get{_return _in1;}
set{
if (_in1 != value)
_in1 = value;
OnPropertyChanged("In1");
}
}
}