나는 UserControl을 가지고 있는데, 우리는 그것을 "Header"라고 부를 것이다. 그것은 ProjectID라는 DependencyProperty에 있으며,이 컨트롤은보기 모델을 가지고 있는데 DataContext를 수를 설정합니다DataContext, DependencyProperties and Bindings
public BillingInfoHeaderControlVM VM
{
get
{
return (BillingInfoHeaderControlVM)DataContext;
}
set
{
DataContext = value;
}
}
public static readonly DependencyProperty ProjectIDProperty =
DependencyProperty.Register("ProjectID", typeof(int), typeof(BillingInfoHeaderControl), new PropertyMetadata();
public int ProjectID
{
set
{
SetValue(ProjectIDProperty, value);
}
get
{
return (int)GetValue(ProjectIDProperty);
}
}
이제 내가하고 싶은 것,이 컨트롤의 ProjectID에 컨트롤의 ProjectID를 결합하는 것입니다
나는이 프로그램을 실행할 때<controls:Header Grid.Row ="0" x:Name="Header" ProjectID="{Binding ProjectID, Mode=OneWay}"></controls:Header>
는 지금, 나는
재산권이 방법은 찾을 수 없습니다하기 "내용의 InitializeControl() 메서드에서 오류가 발생합니다.
내가 읽고있는 바로는 ProjectID 바인딩이 컨트롤의 데이터 컨텍스트와 관련되어 있기 때문입니다.
<controls:Header Grid.Row ="0" x:Name="Header" ProjectID="{Binding ProjectID, Mode=OneWay, ElementName=ParentControl}"></controls:Header>
을하지만이 못생긴, 우리는 우리가 그것을 사용할 때마다이 컨트롤이 일을 기억하고 싶지 않아요 솔직히 말해서 : 물론 바인딩 내에서 ElementName을 설정할 수 있습니다. 다른 옵션은 무엇입니까? 부모의 DataContext를 사용하도록 바인딩 소스를 설정하는 방법이 있습니까?
ProjectID로 뷰 모델 ProjectID을 유지 또한 뷰 모델의 속성 아닌가요? 그렇지 않은 경우 ViewModel의 역할입니다. – AnthonyWJones