小编Edw*_*uay的帖子

为什么DataContext和ItemsSource不是多余的?

在WPF数据绑定中,我知道你有DataContext一个告诉元素它将绑定到哪个数据以及ItemsSource哪个"绑定".

但是,例如在这个简单的例子中,它似乎没有ItemsSource做任何有用的事情,因为,除了绑定之外,你还想要Element做什么DataContext呢?

<ListBox DataContext="{StaticResource customers}" 
         ItemsSource="{Binding}">
Run Code Online (Sandbox Code Playgroud)

在更复杂的例子中ItemsSource,你有路径和来源似乎正在侵占其领土DataContext.

ItemsSource="{Binding Path=TheImages, Source={StaticResource ImageFactoryDS}}"
Run Code Online (Sandbox Code Playgroud)

了解这两个概念的最佳方法是什么,以了解何时以及如何在各种编码方案中应用它们?

data-binding wpf datacontext itemssource

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

是否有更优雅的方式来添加可空的整数?

我需要添加许多类型为nullable int的变量.我使用了空合并运算符将它降低到每行一个变量,但我感觉有更简洁的方法来做到这一点,例如我不能以某种方式将这些语句链接在一起,我已经在其他之前看到过码.

using System;

namespace TestNullInts
{
    class Program
    {
        static void Main(string[] args)
        {
            int? sum1 = 1;
            int? sum2 = null;
            int? sum3 = 3;

            //int total = sum1 + sum2 + sum3;
            //int total = sum1.Value + sum2.Value + sum3.Value;

            int total = 0;
            total = total + sum1 ?? total;
            total = total + sum2 ?? total;
            total = total + sum3 ?? total;

            Console.WriteLine(total);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# nullable null-coalescing-operator

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

如何告诉我的DataTemplate绑定到PARENT ViewModel中的属性?

我有以下MainView.xaml文件,它可以很好地用作MVVM菜单切换器.我有这些配对:

  • Page1View/Page1ViewModel
  • Page2View/Page2ViewModel

在我的MainViewModel中,我用两个ViewModel填充ObservableCollection,然后当用户单击Next按钮时,它调用MainViewModel中的NextPageCommand,它将一个新的ViewModel 切换出CurrentPageViewModel,然后用适当的View显示,效果很好.

我还有一个菜单填充了Observable集合中ViewModels的所有标题,这也很好用.

但是,每个MenuItem都有一个Command ="{Binding SwitchPageCommand}",它应该在MainViewModel上调用SwitchPageCommand,而不是在例如Page1ViewModelPage2ViewModel上调用.

那么我怎么能在模板中指出不要绑定到当前的ViewModel,而是包含 ViewModel的ViewModel,例如:

PSEUDO-CODE:

<DataTemplate x:Key="CodeGenerationMenuTemplate">
    <MenuItem 
        Command="{Binding <parentViewModel>.SwitchPageCommand}" 
        Header="{Binding Title}" 
        CommandParameter="{Binding Title}"/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

这是MainViewModel:

<Window x:Class="TestMenu234.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:TestMenu234.Commands"
    xmlns:vm="clr-namespace:TestMenu234.ViewModels"
    xmlns:v="clr-namespace:TestMenu234.Views"
    Title="Main Window" Height="400" Width="800">

    <Window.Resources>
        <DataTemplate x:Key="CodeGenerationMenuTemplate">
            <MenuItem Header="{Binding Title}" Command="{Binding SwitchPageCommand}" CommandParameter="{Binding Title}"/>
        </DataTemplate>
        <DataTemplate DataType="{x:Type vm:Page1ViewModel}">
            <v:Page1View/>
        </DataTemplate>
        <DataTemplate DataType="{x:Type vm:Page2ViewModel}">
            <v:Page2View/>
        </DataTemplate>
    </Window.Resources>

    <DockPanel>

        <Menu DockPanel.Dock="Top">
            <MenuItem Header="Code …
Run Code Online (Sandbox Code Playgroud)

data-binding wpf xaml mvvm

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

ASP.NET MVC视图中允许多少逻辑?

在查看ASP.NET MVC站点的示例时,我在视图中看到了很多嵌入式逻辑示例,例如:

<% if (customerIsAllowed)
   { %>

   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>

<% }  else {%>

   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>

<% } %>
Run Code Online (Sandbox Code Playgroud)

虽然这对我来说似乎是错误的,因为它是我们试图摆脱ASP 3.0的那种东西,我甚至在一些播客中听到过"MVC框架的其余部分"中的"一点点逻辑是否正常"正在照顾我们在ASP 3.0中没有的结构.

是否有任何MVC约定指定视图中允许的逻辑类型和数量?

asp.net-mvc views

32
推荐指数
1
解决办法
8042
查看次数

如何在忽略大小写的情况下测试是否定义了枚举?

以下通用静态方法接受一个字符串并返回一个枚举.

因为我将ignoreCase参数设置为true,所以很好地忽略了大小写.

但是,我还想测试枚举是否存在,但执行此操作的enum.IsDefined方法似乎没有ignoreCase参数.

如何测试枚举是否被定义,并且在同一个忽略的情况下?

using System;

namespace TestEnum2934234
{
    class Program
    {
        static void Main(string[] args)
        {
            LessonStatus lessonStatus = StringHelpers.ConvertStringToEnum<LessonStatus>("prepared");
            ReportStatus reportStatus = StringHelpers.ConvertStringToEnum<ReportStatus>("finished");

            Console.WriteLine(lessonStatus.ToString());
            Console.WriteLine(reportStatus.ToString());
            Console.ReadLine();
        }
    }

    public static class StringHelpers
    {
        public static T ConvertStringToEnum<T>(string text)
        {
            if (Enum.IsDefined(typeof(T), text)) //does not have ignoreCase parameter
                return (T)Enum.Parse(typeof(T), text, true);
            else
                return default(T);
        }
    }

    public enum LessonStatus
    {
        Defined,
        Prepared,
        Practiced,
        Recorded
    }

    public enum ReportStatus …
Run Code Online (Sandbox Code Playgroud)

c# enums case-sensitive

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

如何将工作表的列数作为整数(28)而不是Excel-字母("AB")?

鉴于:

$this->objPHPExcelReader = PHPExcel_IOFactory::createReaderForFile($this->config['file']);
$this->objPHPExcelReader->setLoadSheetsOnly(array($this->config['worksheet']));
$this->objPHPExcelReader->setReadDataOnly(true);
$this->objPHPExcel = $this->objPHPExcelReader->load($this->config['file']);
Run Code Online (Sandbox Code Playgroud)

我可以迭代这样的行,但它很慢,即在3MB的Excel文件中,工作表有"EL"列,每行大约需要1秒:

foreach ($this->objPHPExcel->setActiveSheetIndex(0)->getRowIterator() as $row)
{
    $dataset = array();
    $cellIterator = $row->getCellIterator();
    $cellIterator->setIterateOnlyExistingCells(false);
    foreach ($cellIterator as $cell)
    {
        if (!is_null($cell))
        {
            $dataset[] = $cell->getCalculatedValue();
        }
    }
    $this->datasets[] = $dataset;
}
Run Code Online (Sandbox Code Playgroud)

当我像这样迭代时,它显着更快(在30秒内大约2000行),但我必须将字母例如"EL"转换为数字:

$highestColumm = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestColumn(); // e.g. "EL"
$highestRow = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestRow();

$number_of_columns = 150; // TODO: figure out how to get the number of cols as int
for ($row = 1; $row < $highestRow …
Run Code Online (Sandbox Code Playgroud)

php phpexcel

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

你如何处理MVVM中的ComboBox SelectionChanged?

对于那些使用纯MVVM的人来说,如何在不回复代码的情况下处理ComboBox SelectionChanged事件?

我尝试了例如AttachedBehaviors,但不支持Event ="SelectedChanged":

<ComboBox>
    <ComboBoxItem Content="Test1">
        <c:CommandBehaviorCollection.Behaviors>
            <c:BehaviorBinding Event="SelectionChanged" 
                               Command="{Binding SelectedChanged}"
                               CommandParameter="MainBorder123"/>
        </c:CommandBehaviorCollection.Behaviors>
    </ComboBoxItem>
    <ComboBoxItem Content="Test2"/>
    <ComboBoxItem Content="Test3"/>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

wpf events mvvm attachedbehaviors

31
推荐指数
3
解决办法
5万
查看次数

如何在WPF/XAML中绑定背景颜色?

我需要更改为以下代码,以便背景为红色,我尝试的两种方式都没有:

替代文字http://www.deviantsart.com/upload/1okq25l.png

XAML:

<Window x:Class="TestBackground88238.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <StackPanel>

        <TextBlock Text="{Binding Message}" Background="{Binding Background}"/>

        <TextBlock Text="{Binding Message}">
            <TextBlock.Background>
                <SolidColorBrush Color="{Binding Background}"/>
            </TextBlock.Background>
        </TextBlock>

    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

代码背后:

using System.Windows;
using System.ComponentModel;

namespace TestBackground88238
{
    public partial class Window1 : Window, INotifyPropertyChanged
    {

        #region ViewModelProperty: Background
        private string _background;
        public string Background
        {
            get
            {
                return _background;
            }

            set
            {
                _background = value;
                OnPropertyChanged("Background");
            }
        }
        #endregion

        #region ViewModelProperty: Message
        private string _message;
        public string Message
        {
            get
            {
                return …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml binding background

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

如何在NetBeans中完成jQuery代码的完成?

我正在使用NetBeans for PHP.

当我编辑.js文件时,它给了我javascript代码完成.

我怎样才能让它也给我jQuery代码完成?

alt text http://i34.tinypic.com/1hdmpt.png

php jquery netbeans

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

如何避免PHP中的调用时传递引用弃用错误?

我正在尝试减少发送到我的apache服务器日志的警告.

一个警告是:

已弃用调用时传递引用.

这是我很难想象为什么这个被废弃了,因为它是这样一个有用的编程功能,基本上我这样做:

public function takeScriptsWithMarker(&$lines, $marker) {

    ...
}
Run Code Online (Sandbox Code Playgroud)

我调用这个函数重复从它得到结果并处理它们,但也让数组$ lines通过重复发送到这个方法来建立.

  1. 重新编程这将是广泛的.
  2. 我不想只是"关闭警告",因为我想看到其他警告.

因此,由于不推荐使用call-by引用,获得此模式功能的"可接受方式"是什么:即将字符串数组发送到方法中,让方法更改它们,然后继续使用阵列?

php

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