2017-03-09 14 views
1

これはDataTemplateです。Grid ColumnDefinition width属性をプロパティにバインドしても機能しません。

public string myColumnWidth { get; set; } //using Fody 

コードをコンパイルして実行:

<DataTemplate x:Key="Node2Titles3Flds"> 
    <Border BorderBrush="Aqua" BorderThickness="0" Padding="1" Margin="1"> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="0"/> 
       <ColumnDefinition Width="{Binding myColumnWidth}"/> 
       <ColumnDefinition Width="1*" /> 
      </Grid.ColumnDefinitions> 
      <TextBlock Grid.Column="0" Text="{Binding id}" /> 
      <TextBlock Grid.Column="1" Text="{Binding Name}" Margin="4,0,5,0" TextAlignment="Left"/> 
      <TextBlock Grid.Column="2" Text="{Binding Value}" TextAlignment="Left"/> 
      </Grid> 
    </Border> 
</DataTemplate> 

は、これはプロパティです。 DataTemplateは、プロパティで表示できるResourceDictionaryにあります。

起こって奇妙な物事のカップルがあります。

  • のDataTemplateで「mCol」と入力しながら、インテリセンスは何も表示されませんが。編集は影響を与えません。
  • myColumnWidthのバインドがまったく機能していません。

のResourceDictionaryはResDict.xamlは、ルートフォルダ内にあり、ここで私は困惑リンク

<Window.Resources> 
     <ResourceDictionary Source="ResDict.xaml"> 
    </ResourceDictionary> 
</Window.Resources> 

で命名。何か案は?すべての

答えて

0

まず、あなたの財産を2倍にします、とのDataContext(ViewModelに)でそれのためにいくつかの値を設定

例:

public class MainViewModel 
    { 
     public MainViewModel() 
     { 
      Width = 200; 
     } 
     public double Width { get; set; } 

とXAMLで:

<Window.DataContext> 
     <local:MainViewModel /> 
    </Window.DataContext> 
    <Grid ShowGridLines="True"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="100" /> 
      <ColumnDefinition Width="100" /> 
      <ColumnDefinition Width="{Binding Width}" /> 
      <ColumnDefinition Width="100" /> 
      <ColumnDefinition Width="100" /> 
     </Grid.ColumnDefinitions> 
    </Grid> 

とそれはうまく動作します。実行時に調整したい場合、ViewModelはINotifyPropertyChangedを実装する必要があり、プロパティはOnPropertyChangedを呼び出す必要があります。

+0

ありがとうございました。リソースディクショナリの一部をやり直して問題を解決しました。 – Neil

0

問題を修正しました。戻って、正しくない項目を再読み込みします。私は説明するが...それはあまりにも面倒だった。

関連する問題