小编Pit*_*k76的帖子

名称"交互"在名称空间"http://schemas.microsoft.com/expression/2010/interactivity"中不存在

我在几个项目中使用了System.Windows.Interactivity DLL而没有任何问题.现在在我的最新项目中,我无法让它发挥作用.我总是得到以下错误:

名称"交互"在名称空间" http://schemas.microsoft.com/expression/2010/interactivity " 中不存在.

<i:Interaction.Triggers>
    <EventTrigger EventName="SelectionChanged">
        <i:InvokeCommandAction Command="{Binding AddSelectLocomotifCommand}"
            CommandParameter="{Binding SelectedItem, ElementName=listBoxLocs}" />
    </EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)

名称空间:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
Run Code Online (Sandbox Code Playgroud)

双方Microsoft.Expression.InteractionsSystem.Windows.Interactivity添加到项目的引用,我甚至复制该DLL的一个文件夹我的项目中.

知道这是怎么来的吗?我使用VS2012和.NET 4.5

c# wpf visual-studio

35
推荐指数
5
解决办法
4万
查看次数

正则表达式在特定单词之前和之后找到单词

我需要一个正则表达式,它在特定单词之前和之后给出了单词,包括搜索单词本身.

喜欢:" 这是一些用于查找单词的虚拟文本 "当文本是我的搜索词时,应该给我一串"虚拟文本 " .

另一个问题是,提供的字符串可能包含多一次搜索字,因此我必须能够使用C#检索该字符串中的所有匹配项.

就像" 这是一些虚拟文本,用字符串中的单词找到一个单词 "应返回:

  • "虚拟文字 "
  • "有文字和"

编辑: 其实我应该返回包含搜索词的所有匹配项.举几个例子:文字太多了. - >文字是

阅读我的文字. - >我的文字

这是一个文本字段示例 - >一个文本字段示例

c# regex

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

在TabItem中加载UserControl

我有一个Usercontrol(TabUserControl),其中包含一个TabControl.UserControl的Viewmodel加载了Ob Obtable的TabItems集合.这些项目是另一个用户控件.当我只在tabcontrol中加载文本时没有问题,但是如何将其他用户控件加载到TabUserControl的tabitem中.我正在使用MVVM.

这是我的代码:

public class TabItem
{
    public string Header { get; set; }
    public object Content { get; set; } // object to allow all sort of items??
}
Run Code Online (Sandbox Code Playgroud)

TabUserControl的Viewmodel

public class TabViewModel
{
    public ObservableCollection<TabItem> Tabs {get;set;}

    public TabViewModel()
    {
        Tabs = new ObservableCollection<TabItem>();
        //Tabs.Add(new TabItem { Header = "Overview", Content = new OverviewViewModel() }); How to load a usercontrol here if it's in the ItemCollection?
        Tabs.Add(new TabItem { Header = "Overview", Content = "Bla bla bla" }); …
Run Code Online (Sandbox Code Playgroud)

wpf user-controls mvvm tabitem

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

WPF Dockpanel无法正确对齐

我有这个代码,我在Button.Content上使用DockPanel.但是它不能让我对齐最后一张图像(小箭头).

<Button Height="70"
                    HorizontalContentAlignment="Left">
              <Button.Content>
                <DockPanel LastChildFill="False">
                  <Image DockPanel.Dock="Left"
                    Height="50"
                         Width="50"
                         Source="{StaticResource Placeholder}"
                         Stretch="UniformToFill"
                         Margin="5" />
                  <TextBlock DockPanel.Dock="Left"
                             Text="Dummy text"
                             VerticalAlignment="Center"
                             Margin="5" />
                  <Image DockPanel.Dock="Right"
                         Height="24"
                         Width="24"
                         Source="{StaticResource Right_Arrow_24}"
                         VerticalAlignment="Center"
                         HorizontalAlignment="Right"
                         Stretch="UniformToFill"
                         Margin="5" />
                </DockPanel>
              </Button.Content>
            </Button>
Run Code Online (Sandbox Code Playgroud)

它现在给了我这个:

DockPanel中

所以右边的小箭头应该放在按钮的右边,而不仅仅是在TextBlock之后.我发现了一些类似的问题,看起来我做得对,但不知怎的,它不是......

我在这做错了什么?

wpf dockpanel

7
推荐指数
2
解决办法
7690
查看次数

WPF状态栏,拉伸文本块以占用尽可能多的空间

我用3个TextBlocks创建了我自己的简单statusbarcontrol.现在我希望第一个Textblock占用尽可能多的空间.我似乎没有完成..现在它只需要显示文本所需的空间.

XAML:

  <StatusBar Background="{StaticResource GradientBrush}">
<StatusBar.ItemsPanel>
  <ItemsPanelTemplate>
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
      </Grid.ColumnDefinitions>
    </Grid>
  </ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem HorizontalAlignment="Left"
               HorizontalContentAlignment="Right">
  <Border BorderThickness="1"
          BorderBrush="Black"
          Padding="5 0 5 0"
          Background="White">
    <TextBlock Text="{Binding Message, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
             Foreground="{Binding TextColorMessage}"
             Background="White"
             />
  </Border>
</StatusBarItem>
<Separator Grid.Column="1" />
<StatusBarItem Grid.Column="2"
               HorizontalAlignment="Right">
  <TextBlock Text="{Binding Path=DatabaseName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</StatusBarItem>
<Separator Grid.Column="3" />
<StatusBarItem Grid.Column="4"
               HorizontalAlignment="Right">
  <TextBlock Text="{Binding Path=ComputerName}" />
</StatusBarItem>
Run Code Online (Sandbox Code Playgroud)

我的StatusBar

wpf xaml statusbar

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

WPF 用户控件的多个实例都使用相同的 ViewModel

我有一个应用程序,当我单击一个按钮时,它会加载一个TabItem带有UserControl. 这工作正常,但是......当我再次单击添加按钮时,另一个TabItem添加了UserControl. 问题来了。当我在 tab1 中添加一些数据并切换到 tab2 时,我也会在那里看到输入的数据。这怎么可能?我ViewModel对每个都使用了一个新的,UserControl因此 tab1 和 tab2 上的两个用户控件如何显示相同的数据。它可能会很愚蠢,但我找不到它......

结构是这样的:MainWindow加载一个UserControl只有 a 的 a TabControl。单击菜单中的“添加”按钮后,将添加一个带有新TabItem内容的新UserControl内容。

这里有一些看起来像这样但不同的问题。

这是一些代码。

TabControl.xaml

<Grid>
    <TabControl x:Name="tabControl" ItemsSource="{Binding TabItems}" SelectedIndex="0">
        <TabControl.Resources>
            <DataTemplate DataType="{x:Type ViewModel:OverviewViewModel}">
                <my:OverviewControl />
            </DataTemplate>
            <DataTemplate DataType="{x:Type ViewModel:MemberViewModel}">
                <my:MemberControl />
            </DataTemplate>
        </TabControl.Resources>
        <TabControl.ItemContainerStyle>
            <Style TargetType="TabItem">
                <Setter Property="Header" Value="{Binding Header}" />
            </Style>
        </TabControl.ItemContainerStyle>
    </TabControl>
</Grid>
Run Code Online (Sandbox Code Playgroud)

TabControl.cs

public TabControl()
{
    InitializeComponent();
    this.DataContext …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm wpf-controls

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

使用MVVM将UserControl加载到ItemsControl

我有一个UserControl,我想在我的MainWindow上加载多次.为此,我使用ItemsControl:

    <ItemsControl Grid.Row="1"
              ItemsSource="{Binding FtpControlList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel Orientation="Horizontal"
                 IsItemsHost="True" />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <ItemsControl.ItemTemplate>
    <DataTemplate DataType="{x:Type my:BackUpControl}">
      <my:BackUpControl Margin="5"
                        Width="500" />
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

我的UserControl由ViewModel绑定.我的MainWindow也有一个ViewModel.在MainWindowViewModel中,我有一个OberservableCollection依赖项属性,该属性需要一个UserControlViewModel列表.在MainWindowViewModel的构造函数中,我将一些UserControlViewModels添加到List中.

    public MainWindowViewModel()
{
  FtpControlList = new ObservableCollection<BackUpControlViewModel>();
  FtpControlList.Add(new BackUpControlViewModel("View 1"));
  FtpControlList.Add(new BackUpControlViewModel("View 2"));
  FtpControlList.Add(new BackUpControlViewModel("View 3"));
}

public static readonly DependencyProperty FtpControlListProperty = DependencyProperty.Register("FtpControlList", typeof(ObservableCollection<BackUpControlViewModel>), typeof(MainWindowViewModel));
public ObservableCollection<BackUpControlViewModel> FtpControlList
{
  get { return (ObservableCollection<BackUpControlViewModel>)GetValue(FtpControlListProperty); }
  set { SetValue(FtpControlListProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)

现在由于某种原因,它加载了3次空的usercontrol而不是FtpControlList属性中的属性设置为"View 1,View 2和View 3".如何确保列表中的UserControls已加载而非空载?

UserControlViewModel的一部分:

    // part of the UserControl …
Run Code Online (Sandbox Code Playgroud)

wpf user-controls itemscontrol mvvm

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

不要使用clickonce覆盖settings.settings文件

起初我在appSet配置下的app.config文件中存储了一些用户定义的设置.这些是用户在运行时可以更改的属性.我遇到的第一个问题是当我使用ClickOnce部署我的应用程序时,它会覆盖app.config文件并且用户丢失了他的个人设置.

然后我将属性移动到settings.settings文件(app.config中的= usersettings部分),因为我在互联网上发现,使用ClickOnce部署时不会覆盖此部分.不,它确实.. Settings.Settings属性是:

  • 构建动作=内容
  • 复制到=不要复制

那么如何在app.config文件或settings.settings文件中完成我的用户的个人设置.还是有另一种方式,我做错了吗?

谢谢!

c# clickonce app-config

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

Selenium拖放在Chrome或Firefox中无效

我使用下面的拖放代码将图片拖入照片场.这在InternetExplorer中工作正常,但在Firefox或Chrome中不起作用.我不明白为什么不.

正如您在下面的代码中看到的,我尝试了很多不同的方法来执行拖放操作,但它们都不起作用.主要问题是在释放图像后目标未更新.我看到丢弃发生但没有更新.

有谁知道为什么会这样?我正在使用C#和最新的Selenium驱动程序2.39,Chrome驱动程序2.8.

public static void DoDragAndDrop(IWebDriver driver, string dragImageId, string dropFieldId)
    {
        Console.WriteLine("Drag and drop image '{0}' to the editor {1}..", dragImageId, dropFieldId);
        IWebElement dragElement = WebDriverExtensions.TryFindElement(By.Id(dragImageId));
        IWebElement dropElement = WebDriverExtensions.TryFindElement(By.Id(dropFieldId));

        if(dragElement == null)
            Console.WriteLine("dragElement is null");
        if(dropElement == null)
            Console.WriteLine("dropElement is null");

        ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView();", dragElement);
        Thread.Sleep(500);

        ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView();", dropElement);
        Thread.Sleep(200);

        Console.WriteLine("Drag and drop 1");
        var builder1 = new Actions(driver);
        builder1.MoveToElement(dragElement).ClickAndHold();
        builder1.MoveToElement(dropElement).Build().Perform();
        Thread.Sleep(2000);

        Console.WriteLine("Drag and drop 2");
        var builder2 = new Actions(driver);
        builder2.DragAndDrop(dragElement, dropElement);
        Thread.Sleep(2000);

        Console.WriteLine("Drag and drop 3");
        var builder3 …
Run Code Online (Sandbox Code Playgroud)

c# selenium selenium-webdriver

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

Swagger不支持Swagger 2.0:具有路径的多个操作

我的Web Api 2控制器上有2个Get方法:

// GET: api/ClientApi
public HttpResponseMessage GetAll()
{
    IEnumerable<Client> clients = _clientRepository.GetAll();

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, clients);
    return response;
}

// GET: api/ClientApi/userId
public HttpResponseMessage GetAllClientsForUser(string userId)
{
    IEnumerable<Client> clients = _clientRepository.GetAll();
    var clientUsers = _clientUserRepository.FindAll(cu => cu.UserId == userId).ToList();
    var clientsForUser = clients.Where(i => clientUsers.Select(cu => cu.ClientId).ToList().Contains(i.Id)).ToList();

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, clientsForUser);
    return response;
}

// GET: api/ClientApi/clientId
public HttpResponseMessage GetClientById(int id)
{
    var client = _clientRepository.GetById<Client>(id);

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, client);
    return response;
}
Run Code Online (Sandbox Code Playgroud)

尽管名称不同,但出现错误:

Swagger …

swagger asp.net-web-api2

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

WPF AvalonDock添加文档

我有一个带AvalonDock的窗口.在启动时,打开了一个Document,其中填充了LocControllers usercontrols(LocControllersViewModel).

现在我希望在LocController上双击一个LocController用户控件在新Document中打开时.因此,第一个文档始终是概述,填充了LocController用户控件,双击后添加了其他文档.

我查看了AvalonDock和MVVM示例,但我无法弄清楚如何获得我想要的行为.

到目前为止我发现的是我必须使用DocumentsSource属性来绑定文档.所以我想我需要创建一个DocumentViewModels集合来绑定到DocumentsSource属性.我需要用Documentcontrols填充DocumentViewModel.对于第一个Document,将是一个LocController用户控件的列表,对于其他Documents,它可以是其他用户控件.

任何人都可以为我提供一个小代码示例吗?我不认为这很难,但我只是找不到它:(

编辑:这是我目前的DockingManager XAML:

    <Window x:Class="AvalonDockMvvmTest.MainWindow"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
                xmlns:AvalonDockMvvmTest="clr-namespace:AvalonDockMvvmTest"
                Title="MainWindow"
                Height="350"
                Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Menu>
            <MenuItem Header="File">
                <MenuItem Header="NewDetail"
                                    Command="{Binding NewCommand}" />
                <MenuItem Header="OpenSelectDetail"
                                    Command="{Binding OpenCommand}" />
            </MenuItem>
        </Menu>

        <xcad:DockingManager x:Name="DockManager"
                                                 Margin="3 0 3 0"
                                                 DocumentsSource="{Binding Documents, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">

            <xcad:DockingManager.LayoutItemTemplateSelector>
                <AvalonDockMvvmTest:PanesTemplateSelector>
                    <AvalonDockMvvmTest:PanesTemplateSelector.OverViewTemplate>
                        <DataTemplate DataType="{x:Type AvalonDockMvvmTest:OverviewViewModel}"> <!-- Overview user control -->
                        </DataTemplate>
                    </AvalonDockMvvmTest:PanesTemplateSelector.OverViewTemplate>

                    <AvalonDockMvvmTest:PanesTemplateSelector.DetailTemplate>
                        <DataTemplate DataType="{x:Type AvalonDockMvvmTest:DetailViewModel}"> <!-- Detail user control -->
                        </DataTemplate>
                    </AvalonDockMvvmTest:PanesTemplateSelector.DetailTemplate>

                </AvalonDockMvvmTest:PanesTemplateSelector>
            </xcad:DockingManager.LayoutItemTemplateSelector>
        </xcad:DockingManager>

    </Grid>
</Window> …
Run Code Online (Sandbox Code Playgroud)

c# wpf user-controls mvvm avalondock

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