小编Pet*_*erP的帖子

在不使用循环的情况下在ObservableCollection中查找项

目前我有以下语法(list是包含具有许多不同属性的对象的列表(其中Title是其中之一):

for (int i=0; i < list.Count; i++)
{
   if(title == list[i].Title)
   {
    //do something
   }
}
Run Code Online (Sandbox Code Playgroud)

如何在list[i].Title不必遍历整个集合的情况下访问它?由于我的列表越来越大,这可能会影响我的程序的性能.

我在我的程序中有很多类似的语法(通过for循环和索引访问公共属性).但我确定必须有一个更好,更优雅的方式来做到这一点?

由于我的列表包含对象,因此find方法似乎确实是一个选项.

c# collections wpf

31
推荐指数
4
解决办法
9万
查看次数

数据绑定ItemsControl(DataTemplate)不更新/仅接收程序启动时的值

编辑2:当图表填充时,我无法再更改值.即使我更改列表中的值(ItemControls从中获取值),图表似乎也不会使用新值更新.

我调用计时器中的GetDataGrafiek()方法每隔x秒更新一次我的图表.

        Grafiek graf = new Grafiek();
        graf.GetDataGrafiek();
Run Code Online (Sandbox Code Playgroud)

这是因为线程计时器在一个单独的线程中运行(IsAsynchronous方法中ObjectDataProvider)还是我需要DataContext在我的计时器方法中访问ItemsControl?

编辑:我无法在程序运行时填充图表,所以我创建了ObservableCollection<GrafiekBar>静态(保存条形的填充和值的列表)并初始化如下:

public static ObservableCollection<GrafiekBar> listGrafiek = new ObservableCollection<GrafiekBar>()
        {
            new GrafiekBar() {Value = 0, Fill = (Brush)convertor.ConvertFromString(kleuren[0])},
            new GrafiekBar() {Value = 0, Fill = (Brush)convertor.ConvertFromString(kleuren[1])},
            new GrafiekBar() {Value = 0, Fill = (Brush)convertor.ConvertFromString(kleuren[2])}
        };
Run Code Online (Sandbox Code Playgroud)

从MSDN:ObjectDataProvider:"但是,如果您绑定到已创建的对象,则需要在代码中设置DataContext,如下例所示."


我有一个ItemsControl,显示为一个简单的条形图.当我分配值(在我的codeBehind中硬编码)时,图表会成功填充.

我所做的基本上是将最大值设置为100%并计算其余条形的长度.

问题: 我不希望图表栏值硬编码,但条形图必须更改runTime.为此,我使用的Threading.Timer是每当我的程序运行时每秒运行一次(此计时器中也会发生其他计算).

图表栏值根据每x秒内在此计时器内发生的计算得到更新.

我已经尝试了所有内容,但在程序运行时我无法显示值.当我对它们进行硬编码时,我只能看到条形图(参见GetDataGrafiek()线程末尾的区域).我究竟做错了什么/失踪了?

GetDataGrafiek()(计算来填充我的图表)被调用的ObjectDataProvider.

此方法将TimeSpan作为输入,然后执行计算,以便获得Double Value(基于上面解释的100%值),然后将其放置在bar的值(= dateTemplate的宽度)中.

<ObjectDataProvider x:Key="odpLbGrafiek" ObjectType="{x:Type myClasses:GrafiekBar}" MethodName="GetDataGrafiek"/> …
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf xaml ivalueconverter

5
推荐指数
1
解决办法
990
查看次数

标签 统计

c# ×2

wpf ×2

collections ×1

data-binding ×1

ivalueconverter ×1

xaml ×1