ViewModel이 연결된 WPF에서 사용자 정의 UserControl을 빌드하고 있습니다. 나는 또한 역동적으로 코드의 컨트롤을 만들고 싶다. 하지만 지금은 ViewModel 속성을 사용하여 생성 된 컨트롤을 바인딩하는 데 문제가 있습니다. 내 코드는 다음과 같습니다WPF ViewModel에 코드 뒤에 동적 컨트롤 바인딩
<UserControl x:Class="SVT.Teste.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
DataContext="UserControl1ViewModel">
<Grid Name="GridContainer">
</Grid>
</UserControl>
뒤에 코드 :
"System.Windows.Data Error: 40 : BindingExpression path error: 'Test' property not found on 'object' ''String' (HashCode=-946585093)'. BindingExpression:Path=Test; DataItem='String' (HashCode=-946585093); target element is 'Button' (Name=''); target property is 'Content' (type 'Object')"
당신이 날 도와 줄 수 :
public UserControl1()
{
InitializeComponent();
System.Windows.Controls.Button newBtn = new Button();
newBtn.SetBinding(Button.ContentProperty, new Binding("Test"));
GridContainer.Children.Add(newBtn);
}
public class UserControl1ViewModel
{
private string test = "ola";
public string Test
{
get { return test; }
}
}
내가 받기를 실행하면?
모든 답변이 작동하지만 이것은 올바른 대답입니다. 첫 번째 방법은보기가 있기 때문에 코드 뒤에 데이터 바인딩을 설정하는 것을 싫어합니다. 고마워요! – Louro