私はかなり新しくC#です。メニューとテキストブロックを含むWPFウィンドウを作成しようとしていますが、データバインディングの作業はありません。 インターネット上のいくつかのページとフォーラムを見ましたが、人々は常にDataContextの設定について話していましたが、私のMainWindowがDataContextとみなされない理由はわかりません。私は何か非常に間違っているのですか?C#WPFデータバインディングが機能しない
<Window x:Class="holdingseditor.MainWindow"
<Grid>
<TextBlock Height="30" Margin="0,24,0,0" Width="675" Text="{Binding DbRibbonText}" Background="{Binding DbRibbonColor}"/>
<TextBlock Height="30" Margin="675,24,0,0" Width="472" Background="{Binding WfRibbonColor}" Text="{Binding WfRibbonText}"/>
<Menu HorizontalAlignment="Left" Height="24" Margin="0,0,0,0" VerticalAlignment="Top" Width="1155">
<MenuItem Header="_View">
<MenuItem Header="Show _Archived Files History" Height="22" FontSize="12" Margin="0" Click="M_ShowArchivedFiles" IsEnabled="{Binding Path=DiesenameLoaded}"/>
</MenuItem>
<MenuItem Header="_Workflow">
<MenuItem Header="O_utside Mode" Height="22" FontSize="12" Margin="0" IsCheckable="true" IsChecked="{Binding IsWfOutside}"/>
</MenuItem>
</Menu>
</Grid>
</Window>
そして、私の性質は、そのようになります:ここに私のXAMLはある
namespace holdingseditor
{
public partial class MainWindow : Window
{
public bool DiesenameLoaded
{get { return false; }}
public bool IsWfOutside
{get { return true; }}
public string DbRibbonText
{get {return "my text";}}
public Color DbRibbonColor
{get {return Color.FromArgb(255, 0, 0, 255);}}
}
}
を読むことができる
INotifiyPropertyChanged
を実装する必要があなたの答えのためのあなたのアンソニーありがとうございます。コンストラクタでDataContextを設定すると、最終的には多くのことが変わります。 メニュー項目のバインドには問題ありませんが、2つのTextBlock(テキストと背景のバインディング)にあるバインディングでは常に機能しません。 プロパティの更新に関しても、何か他のことをしなくてもうまく動作すると思いました。大したことではないと私は多くの複雑さを感じています。正直なところ、C++で開発する人は、これらのデータバインディングを使用するのではなく、手動ですべてを手動で変更する方が簡単です。 –
私はTextBlocksのために、私の色のタイプが問題であることを知りました。 xamlはSolidColorBrushを想定しています。 –
@pashashadkamiはい、バインドしようとしているものに正しい型を渡していることを確認する必要があります。コンバータを使用することもできます。 これまで、データバインディングの学習を始めた技術者は、手作業で行う方が簡単だと言いました。あなたが実際にそれを行う方法と、それがMVVMでどのように強力であるかを実際に学ぶまで、その後、あなたは振り返ることはありません。 –