[1] 質問文
[1.1] 自分が今行いたい事は何か
・MainWindowからChartWindowを呼び出す。
・ChartWindowにはItemControl(ユーザーコントロール ChartControl)が配置され、
ChartWindow呼び出し時、動的にユーザーコントロールが追加される
・ChartControlはTextBlockとImageコントロールを持っている
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
ChartWindow.xaml
コード:
<Window
・
・
・
<!--コンテキスト-->
<Window.DataContext>
<localVM:ChartViewModel />
</Window.DataContext>
・
・
・
<ItemsControl Grid.Column="0" ItemsSource="{Binding Path=DataList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<UserControl:ChartControl Number="{Binding Number}" CImage="{Binding CImage}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
・
・
・
</Window>
ChartWindow.xaml.cs
コード:
public partial class ChartWindow : Window {
public TimeChartWindow(List<ChartDataInfo> chartDataInfos) {
InitializeComponent();
var vm = new ChartViewModel();
foreach(var c in chartDataInfos) {
vm.DataList.Add(c);
}
this.DataContext = vm;
}
}
ChartViewModel.cs
コード:
public class ChartViewModel {
public ObservableCollection<ChartDataInfo> DataList { get; set; } = new ObservableCollection<ChartDataInfo>();
public TimeChartViewModel() {}
}
ChartControl.xaml
コード:
<UserControl
・
・
・
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Margin="5" FontSize="36" VerticalAlignment="Center" TextAlignment="Center" Text="{Binding Number}"/>
<Image Grid.Column="1" Margin="5" Source="{Binding CImage}"/>
</Grid>
</UserControl>
ChartControl.xaml.cs
コード:
public partial class ChartControl : System.Windows.Controls.UserControl {
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Number", typeof(string), typeof(ChartControl));
public static readonly DependencyProperty ChartImageProperty =
DependencyProperty.Register("CImage", typeof(string), typeof(ChartControl));
public ChartControl() {
InitializeComponent();
}
public string Number {
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public ImageSource CImage {
get { return (ImageSource)GetValue(ChartImageProperty); }
set { SetValue(ChartImageProperty, value); }
}
}
ChartDataInfo.cs
コード:
public class ChartDataInfo {
public string Number { get; set; }
public ImageSource CImage { get; set; }
}
[1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
実行は自分の望む動作となっているが、ChartWIndows.xamlにてエラーが表示される
コード:
XamlParseException: 型 'xxxxxxxxxxxxxxx_UserControl_ChartControl_8_389775820' の 'Number' プロパティで 'Binding' を設定することはできません。'Binding' は、DependencyObject の DependencyProperty でのみ設定できます。
場所 System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader, XamlObjectWriter currentWriter)
場所 System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlObjectWriter objectWriter)
場所 System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(DependencyObject container, IComponentConnector componentConnector, IStyleConnector styleConnector, List`1 affectedChildren, UncommonField`1 templatedNonFeChildrenField)
場所 System.Windows.FrameworkTemplate.LoadContent(DependencyObject container, List`1 affectedChildren)
場所 System.Windows.StyleHelper.ApplyTemplateContent(UncommonField`1 dataField, DependencyObject container, FrameworkElementFactory templateRoot, Int32 lastChildIndex, HybridDictionary childIndexFromChildID, FrameworkTemplate frameworkTemplate)
場所 System.Windows.FrameworkTemplate.ApplyTemplateContent(UncommonField`1 templateDataField, FrameworkElement container)
場所 System.Windows.FrameworkElement.ApplyTemplate()
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.Controls.StackPanel.StackMeasureHelper(IStackMeasure measureElement, IStackMeasureScrollData scrollData, Size constraint)
場所 System.Windows.Controls.StackPanel.MeasureOverride(Size constraint)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.ContextLayoutManager.UpdateLayout()
場所 System.Windows.UIElement.UpdateLayout()
InnerException: なし
[1.4] 今何がわからないのか、知りたいのか
XAMLでエラーが出ないようにする
[2] 環境
[2.1] Windows 10 pro 64bit
[2.2] Visual Studio 2019
以上になります。
お手数をおかけしますが、ご回答のほど、よろしくお願いいたします。