목록보기 컨트롤의 셀 템플릿 안에 배치 된 사용자 지정 사용자 정의 컨트롤의 속성을 바인딩하는 방법을 알아 내려했지만 작동하지 않습니다 . 모든 DisplayMemberBinding 필드가 예상대로 작동하고 올바른 값을 얻었지만 해당 사용자 지정 컨트롤 안에 아무 것도 업데이트되지 않습니다.WPF 바인딩 GridViewColumn.CellTemplate의 DataTemplate 내부 UserControl 속성
<ListView Margin="10" x:Name="lvHistory">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Database" Width="150" DisplayMemberBinding="{Binding ActiveBackup.Database.Name, Mode=TwoWay}" />
<GridViewColumn Header="Start Time" Width="130" DisplayMemberBinding="{Binding ActiveBackup.StartTime, Mode=TwoWay}" />
<GridViewColumn Header="Time Elapsed" Width="100" DisplayMemberBinding="{Binding ActiveBackup.TimeElapsed, Mode=TwoWay}" />
<GridViewColumn Header="P2" Width="100" DisplayMemberBinding="{Binding Progress, Mode=TwoWay}" />
<GridViewColumn x:Name="progressColumn" Header="Progress" Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<local:cProgressBarSmall x:Name="pr1" Value="{Binding Progress, Mode=TwoWay}" Visibility="Visible" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
코드 뒤에 cProgressBarSmall 제어에서 WPF의 ListView 컨트롤.
public partial class cProgressBarSmall : UserControl
{
public ActiveBackup ActiveBackup { get; set; }
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(decimal), typeof(cProgressBarSmall));
private decimal _value;
public decimal Value
{
get
{
return (decimal) GetValue(ValueProperty);
}
set
{
_value = value;
SetValue(ValueProperty, value);
p1.Value = value.ToDoubleNotNull();
pLabel.Text = value.ToPercent(0);
if (value == 0)
{
p1.Visibility = Visibility.Hidden;
pLabel.Visibility = Visibility.Hidden;
}
else if (value.ToDoubleNotNull() >= p1.Maximum)
{
pLabel.Text = "Finished!";
pLabel.Foreground = new SolidColorBrush(Colors.Black);
}
}
}
}
}
나는 그것을 따라서 코드 숨김에서 직접 액세스 할 수없는 DataTemplate이에 그리고 때문에 "PR1"에 접근 할 수있는 방법을 찾을 수 없습니다. 바인딩이 작동하지 않습니까? 이전의 열 ("P2"열)은 값을 실제로 업데이트하고 올바르게 표시하는지 확인하기 위해 테스트 열에 있습니다. 그러나 "progressColumn"은 항상 기본값 만 표시합니다.
ListView.View> GridView> GridViewColumn> GridViewColumn.CellTemplate> DataTemplate 계층 내부의 데이터 바인딩에는 특별한 것이 있습니까?
알 수 있습니다. 도와 줘서 고마워! –