我在几个项目中使用了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.Interactions并System.Windows.Interactivity添加到项目的引用,我甚至复制该DLL的一个文件夹我的项目中.
知道这是怎么来的吗?我使用VS2012和.NET 4.5
我需要一个正则表达式,它在特定单词之前和之后给出了单词,包括搜索单词本身.
喜欢:" 这是一些用于查找单词的虚拟文本 "当文本是我的搜索词时,应该给我一串"虚拟文本 " .
另一个问题是,提供的字符串可能包含多一次搜索字,因此我必须能够使用C#检索该字符串中的所有匹配项.
就像" 这是一些虚拟文本,用字符串中的单词找到一个单词 "应返回:
编辑: 其实我应该返回包含搜索词的所有匹配项.举几个例子:文字太多了. - >文字是
阅读我的文字. - >我的文字
这是一个文本字段示例 - >一个文本字段示例
我有一个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) 我有这个代码,我在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)
它现在给了我这个:

所以右边的小箭头应该放在按钮的右边,而不仅仅是在TextBlock之后.我发现了一些类似的问题,看起来我做得对,但不知怎的,它不是......
我在这做错了什么?
我用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)

我有一个应用程序,当我单击一个按钮时,它会加载一个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) 我有一个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) 起初我在appSet配置下的app.config文件中存储了一些用户定义的设置.这些是用户在运行时可以更改的属性.我遇到的第一个问题是当我使用ClickOnce部署我的应用程序时,它会覆盖app.config文件并且用户丢失了他的个人设置.
然后我将属性移动到settings.settings文件(app.config中的= usersettings部分),因为我在互联网上发现,使用ClickOnce部署时不会覆盖此部分.不,它确实.. Settings.Settings属性是:
那么如何在app.config文件或settings.settings文件中完成我的用户的个人设置.还是有另一种方式,我做错了吗?
谢谢!
我使用下面的拖放代码将图片拖入照片场.这在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) 我的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 …
我有一个带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) wpf ×7
c# ×6
mvvm ×4
app-config ×1
avalondock ×1
clickonce ×1
dockpanel ×1
itemscontrol ×1
regex ×1
selenium ×1
statusbar ×1
swagger ×1
tabitem ×1
wpf-controls ×1
xaml ×1