Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表框迭代WPF_C#_.net_Wpf_Windows Phone 7 - Fatal编程技术网

C# 列表框迭代WPF

C# 列表框迭代WPF,c#,.net,wpf,windows-phone-7,C#,.net,Wpf,Windows Phone 7,我将一个列表框绑定到一个可观察的集合,XAML代码片段显示了每个项目将包含的内容(textblocks和Slidercontrol)。Slidercontrol初始设置为不可见 ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Vertical" Width="500"> <st

我将一个列表框绑定到一个可观察的集合,XAML代码片段显示了每个项目将包含的内容(textblocks和Slidercontrol)。Slidercontrol初始设置为不可见

         ListBox.ItemTemplate>
             <DataTemplate>
               <StackPanel Orientation="Vertical" Width="500">

                 <stackPanel Orientation="Horizontal">
                   <TextBlock Margin="0,0,0,0"  Width="100"........
                   <TextBlock Margin="200,10,0,0" Width="100"........ 
                 </StackPanel>

                <Slider Margin="0,0,0,0" Height="100".................

                 <StackPanel Orientation="Horizontal">
                   <TextBlock Width="100" TextWrapping="Wrap"..............
                   <TextBlock Width="100" TextWrapping="Wrap"...............
                 </StackPanel>                                
              </StackPanel>
            </DataTemplate>
         </ListBox.ItemTemplate>
ListBox.ItemTemplate>

尝试ValueConverter-您需要以下内容:

<Slider Margin="0,0,0,0" Height="100" IsEnabled="{Binding Path=Time, Converter={StaticResource IsTimeNearSystemTimeConverter}}" />
<Slider Margin="0,0,0,0" Height="100">
    <Slider.IsEnabled>
        <MultiBinding Converter="{StaticResource betweenTimeConverter}">
            <Binding Path="EarlyTime" />
            <Binding Path="LateTime" />
        </MultiBinding>
    </Slider.IsEnabled>
</Slider>

编辑

听起来您需要使用多值转换器进行多绑定

public class BetweenTimesMultiValueConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        var time1 = (DateTime)values[0];
        var time2 = (DateTime)values[1];
        var current = DateTime.Now;
        return time1 > current && time2 < current;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
中间的公共类多值转换器:IMultiValueConverter
{
公共对象转换(对象[]值,类型targetType,对象参数,CultureInfo区域性)
{
var time1=(DateTime)值[0];
var time2=(DateTime)值[1];
var current=DateTime.Now;
返回时间1>当前时间和时间2<当前时间;
}
公共对象[]转换回(对象值,类型[]目标类型,对象参数,CultureInfo区域性)
{
抛出新的NotImplementedException();
}
}
将上述类作为静态资源添加到xaml中,然后按如下方式使用:

<Slider Margin="0,0,0,0" Height="100" IsEnabled="{Binding Path=Time, Converter={StaticResource IsTimeNearSystemTimeConverter}}" />
<Slider Margin="0,0,0,0" Height="100">
    <Slider.IsEnabled>
        <MultiBinding Converter="{StaticResource betweenTimeConverter}">
            <Binding Path="EarlyTime" />
            <Binding Path="LateTime" />
        </MultiBinding>
    </Slider.IsEnabled>
</Slider>

再次更新


首先,只要您只使用
滑块
查看时间进度,那么正确的控件就是
进度条
控件(使用
滑块
控件可以让用户更改值,例如更改媒体播放器的音量)。此外,您可以更轻松地实现这一点,而无需使用
TreeVisualHelper
。假设您正在绑定到以下
ObservableCollection
对象:

ObservableCOllection<MyObject> Collection;
然后,在项目模板中,将您的
ProgressBar.Value
属性绑定到
ProgressValue
属性,它将类似于以下内容:

<BrogressBar Value="{Binding ProgressValue}"/>


这样,每个项目都有自己的计时器。一个更好的选择是每5分钟只使用一个计时器遍历一次集合,并执行必要的操作。

但我想这更像是静态的,我的ObservaleCollection列表对象中有两个时间属性如果时间介于这两个时间之间,我会每5分钟对转换器进行一次备份和更新,如果时间不再介于开始时间和结束时间之间,我会禁用它,如果您能告诉我如何为此场景编写动态IvalueConverter类,我将不胜感激,感谢您的帮助。感谢Dean感谢您的回复,基本上滑块代表时间的进度,我需要找到一种方法来更新滑块值,感谢您的帮助我在MYObject StartTime和EndTime中有两个属性,我想在开始时间后启用滑块,并每5分钟更新一次,直到达到结束时间,然后禁用滑块控件。感谢您的帮助。Mohammed Good stuff对其他控件的绑定有其他想法,但我如何更新滑块的值,基本上滑块代表时间的进度,也许我应该早点说。@AshwinNagarajan,你用滑块只是为了及时显示进度吗?或者用户可以拖动并更改其值?@AshwinNagarajan,将滑块控件更改为进度条。查看我的新更新,并反馈我是否可以执行此操作IsEnabled=“{Binding IsEnabled_Progress}”Visibility=“Collapsed”Value=“{Binding ProgressValue}”。。。。