1
我想創建這樣一個控制繪製邊框:只在我的列表視圖中的最後一個項目
控制是指4個對象的狀態完成(在上面附着PIC 2完成, 2不是)
爲了實現這一點,我創建了一個水平方向的ListView,並且我創建了一個有一些邊界的數據模板。不知道這是否是正確的方法,或者是否可以使用更簡單的方法我面臨的問題如下:
我無法關閉最後一個項目的邊框。這是因爲我在listview的項目源中有4個項目,每個項目都向左邊繪製邊框。問題是我如何專門爲最後一個項目繪製正確的邊框。
穿過中間的線條應該實際上落後於灰色陰影..我怎麼實現這一點?
守則如下:
<Style x:Key="FishBoneStyle" TargetType="{x:Type Border}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Completed}" Value="True">
<Setter Property="Background" Value="DarkGray"/>
<Setter Property="Margin" Value="0,3,-2,3"/>
</DataTrigger>
</Style.Triggers>
</Style>
<DataTemplate x:Key="FishBoneTemplate">
<Grid Height="25">
<Border BorderThickness="1,0,0,0" BorderBrush="Black" Height="25" HorizontalAlignment="Left" VerticalAlignment="Stretch"/>
<Border Style="{StaticResource FishBoneStyle}" x:Name="FishBoneBorder" Width="25">
</Border>
</Grid>
</DataTemplate>
<!-- The Main Grid-->
<Grid Grid.Row="1" Height="30" Width="130" HorizontalAlignment="Left">
<ListView BorderThickness="0,0,0,0" BorderBrush="Black" ItemsSource="{Binding ProgressTiles}" ItemTemplate="{StaticResource FishBoneTemplate}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
<!-- The line which passess through the center-->
<Border VerticalAlignment="Center" HorizontalAlignment="Left" Width="100" Margin="3,0,2,0" BorderBrush="Black" BorderThickness="1"></Border>
</Grid>
..和這裏是躺在我viewmodel.There可觀察集合內將始終其中的4個型號。
public class ProgressTile : INotifyPropertyChanged
{
private bool _completed;
public bool Completed
{
get { return _completed; }
set
{
_completed = value;
InvokePropertyChanged("Completed");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void InvokePropertyChanged(string e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(e));
}
}
請你可以建議如何讓圖片看起來一致。你也可以請建議如何解決這個問題,爲最後一個項目畫一個邊框,併發送通過中間到背景的線條?