저는 WPF를 처음 접했습니다. MVVM에서 컨트롤을 동적으로 만들려고하지만 컨트롤이 뷰에 렌더링되지 않습니다. 나는 몇 개의 라벨과 텍스트 박스가 생성되도록하고 싶다.MVVM에서 동적으로 컨트롤 만들기
아래는 내 코드입니다 :
public class MyModel
{
public string KeyName
{
get;
set;
}
public string KeyValue
{
get;
set;
}
}
모델 뷰 코드
모델 코드
<Grid>
<ItemsControl ItemsSource="{Binding Properties}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type cw:MyModel}">
<StackPanel Orientation="Horizontal">
<Label Margin="10" Content="{Binding Properties.KeyName}"></Label>
<TextBox Margin="10" Text="{Binding Properties.KeyValue}" Width="250"></TextBox>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
보기 렌더링 (사용자 컨트롤입니다)
public class MyViewModel
{
private ObservableCollection<MyModel> propertiesList = new ObservableCollection<MyModel>();
public CustomWriterViewModel()
{
GetMyProperties()
}
public ObservableCollection<MyModel> Properties
{
get { return propertiesList; }
}
private void GetMyProperties()
{
MyModel m = new MyModel();
m.KeyName = "Test Key";
m.KeyValue = "Test Value";
MyModel.Add(m);
}
}
코드보기, 나는 비어있는 것을 볼 수있다. 텍스트 상자. 나는 무엇이 잘못되었는지 이해할 수 없다. ..? 내 의견으로 당
당신은 추가하지 않습니다
가
DataTemplate
는DataContext
으로 개별 항목을 수신, 따라서 당신은 단지처럼 바인딩 경로 내에서 항목 수준 속성 이름을 포함해야 'propertiesList' 콜렉션에있는 것. – dymanoid'MyModel.Add (m);'와트. 디버거로 코드를 단계별로 실행할 때 도움이됩니다. https://msdn.microsoft.com/en-us/library/sc65sadd.aspx – Will
는 propertiesList에 항목을 추가했지만 여전히 효과가 없습니다. 여전히 문제는 동일합니다. –