小编bas*_*sti的帖子

在iPad上重用C#-Project

我正在尝试将现有的C#-WPF-Project移植为iPad-App.

据我所知,最好的方法是使用MonoTouch并尽可能多地重用C#-Logic.

由于原始项目是用WPF编写的,用于实际的TabletPC,我的问题是,如果有任何办法,重用WPF源或至少最小化我必须再次编写的部分.

如果有任何MonoTouch的好选择,我会很感激提示:)

更新:您的评论很有帮助,但不是我想要的100%.MonoCross看起来很不错,但据我所知,它只是"隐藏"了iOS特定的部分.我真正喜欢的是一种重用手写的"特殊"WPF控件的方法.(或者至少最小化转移它们的工作/时间.)这将是非常棒的.

更新2:也许我应该补充一点,我也会接受一些"复杂的"三步技术.例如,有没有办法将XAML-WPF文件转换为HTML5(或同样强大的东西),然后使用TitaniumPhoneGap?语言和框架应该不是大问题,我只是想尽可能地找到一种方法来重用:)

c# wpf ipad

10
推荐指数
1
解决办法
5430
查看次数

使用Open XML 2.0在Excel中获取cell-backgroundcolor

我试图在excel-spreadsheet中获取单元格的backgroundcolor.我正在使用Open XML 2.0 SDK,我可以打开*.xlsx文件并获取单元格值.我获取Background-Color的代码如下:

   public BackgroundColor GetCellBackColor(Cell theCell, SpreadsheetDocument document)
    {
        BackgroundColor backGroundColor = null;
        WorkbookStylesPart styles = SpreadsheetReader.GetWorkbookStyles(document);
        int cellStyleIndex = (int)theCell.StyleIndex.Value;
        CellFormat cellFormat = (CellFormat)styles.Stylesheet.CellFormats.ChildElements[cellStyleIndex];
        Fill fill = (Fill)styles.Stylesheet.Fills.ChildElements[(int)cellFormat.FillId.Value];
        backGroundColor = fill.PatternFill.BackgroundColor;

        return backGroundColor;
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是,PatternFill.BackgroundColor这只返回一个自然数,我认为它是风格的id.我的问题是,那行代码

DocumentFormat.OpenXml.Spreadsheet.Color c = (DocumentFormat.OpenXml.Spreadsheet.Color)styles.Stylesheet.Colors.ChildElements[Int32.Parse(backGroundColor.InnerText)];
Run Code Online (Sandbox Code Playgroud)

一个错误返回,因为Stylesheet.Colorsnull......也许是因为我使用了"中建"颜色在Excel中-而不是一个自定义的颜色?

我有什么想法可以"计算""backGroundColor-Value"中的真实颜色数?

c# excel .net-4.0 openxml-sdk

6
推荐指数
1
解决办法
2万
查看次数

在Buttonclick上更改视图

我现在正在学习WPF和MVVM(或者至少我正在尝试......).

我创建了一个小样本应用程序,它显示了一个带有2个按钮的窗口,每个按钮都应显示一个新的View on Click.所以我创建了3个UserControls(带有2个按钮的DecisonMaker,以及每个"clicktarget"的一个Usercontrol).

所以我将MainWindow的CotentControl绑定到我的MainWindowViewModel中名为"CurrentView"的属性

MainWindow.xaml代码:

<Window x:Class="WpfTestApplication.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfTestApplication"
    Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
    <local:MainWindowViewModel />
</Window.DataContext>
<Grid>
    <ContentControl Content="{Binding CurrentView, Mode=OneWay}" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

MainWindowViewModel的代码:

class MainWindowViewModel
{      
    private UserControl _currentView = new DecisionMaker();
    public UserControl CurrentView
    {
        get { return _currentView; }
        set { _currentView = value; }
    }

    public ICommand MausCommand
    {
        get { return new RelayCommand(LoadMouseView); }
    }

    public ICommand TouchCommand
    {
        get { return new RelayCommand(LoadTouchView); }
    }

    private void LoadMouseView()
    {
        CurrentView = …
Run Code Online (Sandbox Code Playgroud)

c# wpf user-interface mvvm

6
推荐指数
1
解决办法
7754
查看次数

View在不同的Assembly中找不到ViewModel

我正在开始一个新项目,并将我的项目结构定位在这个问题中推荐的结构上.

现在我看到了奇怪的行为.当我在View-XAML中设置datacontext时,在运行时找不到它(获得a XamlParseException).当我在codebehind-file的构造函数中设置它时,一切正常.

这是使用不同程序集时的官方(记录)行为,还是我做错了什么?

代码:

不工作:

MainView.xaml:

<UserControl x:Class="ViewsRoot.Views.MainView"             
         xmlns:baseControls="clr-namespace:BaseControls;assembly=BaseControls"            
         xmlns:viewModels="clr-namespace:ViewModelsRoot;assembly=ViewModelsRoot">
<UserControl.DataContext>
    <viewModels:ShellViewModel />
</UserControl.DataContext>
Run Code Online (Sandbox Code Playgroud)

MainView.xaml.cs

public MainView() 
{
    InitializeComponent();
    // No DataContext set in codebehind-file    
}
Run Code Online (Sandbox Code Playgroud)

工作:

MainView.xaml:

<UserControl x:Class="ViewsRoot.Views.MainView"             
         xmlns:baseControls="clr-namespace:BaseControls;assembly=BaseControls"            
         xmlns:viewModels="clr-namespace:ViewModelsRoot;assembly=ViewModelsRoot">
<!--<UserControl.DataContext>
    <viewModels:ShellViewModel />
</UserControl.DataContext> -->
Run Code Online (Sandbox Code Playgroud)

MainView.xaml.cs:

public MainView()
{
    InitializeComponent();
    DataContext = new ViewModelsRoot.ShellViewModel();
}
Run Code Online (Sandbox Code Playgroud)

更新:

例外文本是:

{"文件或程序集\"ViewModelsRoot,PublicKeyToken = null \"或其中一个依赖项未找到.系统找不到指定的文件."}

我能看到的唯一内部例外是System.IO.FileNotFoundException.

更新2:

感谢您的评论,但我没有忘记命名空间.我在这里缩短了它以显示代码,但我加倍并且重复检查(再次).DataContexts命名空间也由intellisense填充.整体<viewModels:ShellViewModel />是由智能写的.所以它在设计时被发现......所以更多的想法?

更新3: xaml被"正确"解析,因为我能够将DataContext绑定到同一程序集中的类.

c# wpf .net-4.0 mvvm

6
推荐指数
1
解决办法
1930
查看次数

将多个视图绑定到多个视图模型

我有一个WPF窗口显示不同的自定义视图.到目前为止,我能够使用我学到的关于MVVM的一切:)

现在我遇到了一个新的"问题":在更大的视图中我有10个相同视图的实体.这十个视图实体包含一组控件(文本框,组合框等),但都是一致的.

那么如何将这些视图绑定到ViewModel?

我想过在"更高级别"的ViewModel中有10个ViewModel实例,并将视图修复定义为VM的实例作为datacontext.

我现在的问题是 - >是否有更简单(或更方便)的方法将许多(相同的)视图绑定到其视图模型?

代码示例:

查看型号:

private PanelViewModel _panelViewModel1 = new PanelViewModel();
public PanelViewModel PanelVM1
{
   get { return _panelViewModel1; }
}  
Run Code Online (Sandbox Code Playgroud)

视图 - 例如:

<myControls:vwPanel HorizontalAlignment="Left" x:Name="vwPanel1" 
                    VerticalAlignment="Top" DataContext="{Binding Path=PanelVM1}"/>
Run Code Online (Sandbox Code Playgroud)

让我感到困扰的是,十次观看我需要十倍的逻辑吗?

更新: 回答一些问题:我想要显示一个视图10次(在我的示例中)我通过继承UserControl来定义自己的视图.所以我vwPanel继承自UserControl.10个vwPanel只放在Grid内的StackPanel中.

这不是关于显示数据,正如您所指出的那样,列表视图或数据网格是一个更好的起点.这是一个特殊情况,我需要这么多输入控件:/

UPDATE2:我希望更像是定义ViewModel列表并将我的10个视图绑定到此列表中的一个.但这不会起作用吗?至少我不知道如何在XAML列表中引用一个"特殊"权利......

c# wpf user-interface mvvm

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

在Visual Studio 2010中自动清理代码

我想知道,如果可能的话,在Visual Studio 2010中进行某种自动代码清理.

特别有趣的是:

  • 自动缩进
  • 去除拖尾的空行
  • 删除未使用的使用

在特殊情况下,例如保存文件.

我没有在选项中找到任何东西,但也许我只是有点盲目......在日食中afaik至少有可能打算保存.在Visual Studio中应该有类似的东西吗?

更新:感谢快速回复,问题是我是键盘快捷方式的产品(但仍然感谢提及),但我现在正在研究大量的外国代码,并且不必手动执行它对于每个文件:)

settings code-cleanup visual-studio-2010

3
推荐指数
1
解决办法
2万
查看次数