首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight -我的场景所需的动态属性数量?

Silverlight -我的场景所需的动态属性数量?
EN

Stack Overflow用户
提问于 2013-04-07 11:23:38
回答 1查看 171关注 0票数 0

我手头上有一个应用程序,可以帮助找出如何使用许多技术清理被污染的场地(多重污染物)。当然,我会有一个技术类和一个Pollutant类。

代码语言:javascript
复制
Class Pollutant
{
string name;
double baselineAmount;
double reduction goal
...
}

List<Pollutant> pollutantsList=new List<Pollutant>;

Class Technique
{
string name;
List <PerPollutantProperties> PollutantRelatedProperties=new List<PerPollutantProperties>();
...
}

Class PerPollutantProperties
{
string name;
double CurrentLoad=0;
double ReducedLoad=0;
...
}

List<Technique> techniquesList= new List<Technique>();

main()
{
Pollutant pollutant1 = new Pollutant();
Pollutant pollutant2 = new Pollutant();

...
pollutantsList.Add(pollutant1);
pollutantsList.Add(pollutant2);

Technique tec1=new Technique();
Technique tec2=new Technique();
tec1.name="tec1";
tec2.name="tec2";

PerPollutantProperties PPP= new PerPollutantProperties();    
PPP.name="Nitrogen";
tec1.PollutantRelatedProperties.Add(PPP);
tec2.PollutantRelatedProperties.Add(PPP);


PPP= new PerPollutantProperties();
PPP.name="Phorsphorus";
tec1.PollutantRelatedProperties.Add(PPP);
tec2.PollutantRelatedProperties.Add(PPP);

PPP= new PerPollutantProperties();
PPP.name="Sediment";
tec1.PollutantRelatedProperties.Add(PPP);
tec2.PollutantRelatedProperties.Add(PPP);

techniquesList.Add(tec1);
techniquesList.Add(tec2);
...

dataGridTechniques.ItemSource = techniquesList;
}

XAML:

代码语言:javascript
复制
         <sdk:DataGrid AutoGenerateColumns="False" Height="Auto" HorizontalAlignment="Left" Margin="12,483,0,0" Name="dataGridTechniques" 
                              VerticalAlignment="Top" Width="Auto" RowHeight="55">
                    <sdk:DataGrid.Columns>
                        <sdk:DataGridTemplateColumn Header="Current Load (lbs/yr)" Width="Auto">
                            <sdk:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <toolkit:LayoutTransformer RenderTransformOrigin="0,0" >
                                        <toolkit:LayoutTransformer.LayoutTransform>
                                            <RotateTransform Angle="-90"/>
                                        </toolkit:LayoutTransformer.LayoutTransform>
                                        <sdk:DataGrid ItemsSource="{Binding PollutantRelatedProperties}"  
                                                      RowHeight="70" HeadersVisibility="None" AutoGenerateColumns="False">
                                            <sdk:DataGrid.Columns>
                                                <sdk:DataGridTemplateColumn Width="25" Header="currentLoad">
                                                    <sdk:DataGridTemplateColumn.CellTemplate>
                                                        <DataTemplate>
                                                            <toolkit:LayoutTransformer>
                                                                <toolkit:LayoutTransformer.LayoutTransform>
                                                                    <RotateTransform Angle="90"/>
                                                                </toolkit:LayoutTransformer.LayoutTransform>
                                                                <TextBlock Text="{Binding CurrentLoad,Converter={StaticResource MyDoubleToStringRoundConverter}}" />
                                                            </toolkit:LayoutTransformer>
                                                        </DataTemplate>
                                                    </sdk:DataGridTemplateColumn.CellTemplate>
                                                </sdk:DataGridTemplateColumn>
                                                <sdk:DataGridTemplateColumn Width="25" Header="Pollutant">
                                                    <sdk:DataGridTemplateColumn.CellTemplate>
                                                        <DataTemplate>
                                                            <toolkit:LayoutTransformer>
                                                                <toolkit:LayoutTransformer.LayoutTransform>
                                                                    <RotateTransform Angle="90"/>
                                                                </toolkit:LayoutTransformer.LayoutTransform>
                                                                <TextBlock Text="{Binding PollutantName}" />
                                                            </toolkit:LayoutTransformer>
                                                        </DataTemplate>
                                                    </sdk:DataGridTemplateColumn.CellTemplate>
                                                </sdk:DataGridTemplateColumn>
                                            </sdk:DataGrid.Columns>
                                        </sdk:DataGrid>
                                    </toolkit:LayoutTransformer>
                                </DataTemplate>
                            </sdk:DataGridTemplateColumn.CellTemplate>
                        </sdk:DataGridTemplateColumn>

                        <sdk:DataGridTemplateColumn Header="Reduced Load (lbs/yr)" Width="Auto">
                            <sdk:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <toolkit:LayoutTransformer RenderTransformOrigin="0,0" >
                                        <toolkit:LayoutTransformer.LayoutTransform>
                                            <RotateTransform Angle="-90"/>
                                        </toolkit:LayoutTransformer.LayoutTransform>
                                        <sdk:DataGrid ItemsSource="{Binding PollutantRelatedProperties}" 
                                                      RowHeight="70" HeadersVisibility="None" AutoGenerateColumns="False">
                                            <sdk:DataGrid.Columns>
                                                <sdk:DataGridTemplateColumn Width="25" Header="reducedLoad">
                                                    <sdk:DataGridTemplateColumn.CellTemplate>
                                                        <DataTemplate>
                                                            <toolkit:LayoutTransformer>
                                                                <toolkit:LayoutTransformer.LayoutTransform>
                                                                    <RotateTransform Angle="90"/>
                                                                </toolkit:LayoutTransformer.LayoutTransform>
                                                                <TextBlock Text="{Binding ReducedLoad,Converter={StaticResource MyDoubleToStringRoundConverter}}" />
                                                            </toolkit:LayoutTransformer>
                                                        </DataTemplate>
                                                    </sdk:DataGridTemplateColumn.CellTemplate>
                                                </sdk:DataGridTemplateColumn>
                                                <sdk:DataGridTemplateColumn Width="25" Header="Pollutant">
                                                    <sdk:DataGridTemplateColumn.CellTemplate>
                                                        <DataTemplate>
                                                            <toolkit:LayoutTransformer>
                                                                <toolkit:LayoutTransformer.LayoutTransform>
                                                                    <RotateTransform Angle="90"/>
                                                                </toolkit:LayoutTransformer.LayoutTransform>
                                                                <TextBlock Text="{Binding PollutantName}" />
                                                            </toolkit:LayoutTransformer>
                                                        </DataTemplate>
                                                    </sdk:DataGridTemplateColumn.CellTemplate>
                                                </sdk:DataGridTemplateColumn>
                                            </sdk:DataGrid.Columns>
                                        </sdk:DataGrid>
                                    </toolkit:LayoutTransformer>
                                </DataTemplate>
                            </sdk:DataGridTemplateColumn.CellTemplate>
                        </sdk:DataGridTemplateColumn>
                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>

棘手的部分是应用程序应该允许用户考虑添加/删除污染物/技术,并且每种技术对每种污染物都有不同的减少效率。这意味着对于添加的每一种污染物,需要向技术类添加一个更有效的污染物。我应该如何构造技术类来适应这种情况?我希望将techniquesList绑定到数据网格之类的东西,用户可以在其中输入自定义信息,如recuction efficient。

编辑:决定在技术类中使用List (实际上是每个其他帖子的ObservableCollection和RKaufman的建议)属性,以及嵌套的Datagrid。到目前为止,我遇到了两个问题。

问题1.除了我在嵌套DG中的XAML中设置的列之外,数据源的每个属性也显示为一列。我最初不得不在后台代码中将它们的可见性设置为“折叠”,但在编辑这篇文章时,我发现我可以简单地将AutoGenerateColumns设置为False来删除多余的列。

问题2.每个嵌套数据网格的行0和列0中的TextBlock元素周围都有焦点矩形。我想知道为什么以及如何关闭它们,如果可能的话。即使我点击UI的其他区域,它们也不会消失。

屏幕截图(抱歉,还没有足够的代表在帖子中嵌入图像):http://xyk.iwebs.ws/nestedDG_textBlock_highlight.JPG

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-09 03:20:44

如果我正确地理解了您所说的内容,那么您需要能够在技术中添加或移除污染物。如果这是正确的,那么每种技术都需要有一个污染物集合。为了向用户显示此信息,一个带有行详细信息模板的datagrid可以解决这个问题。至于将污染物添加到技术中,我建议您使用单独的页面或子窗口来添加/编辑该技术,并使用几个列表框来选择/取消选择污染物。我也会使用System.Collections.ObjectModel.ObservableCollection,而不是List,因为它实现了INotifyCollectionChanged,并且当您在集合中添加或删除项时,会向您的UI发出通知。

如果这是不正确的,请让我知道或给我一些更多的信息,我会尝试并进一步指导您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15858553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档