小编Isa*_*avo的帖子

如何为Visual3D或UIElement3D等3D元素使用数据绑定

我的viewmodel中有一堆项目,我将使用Viewport3D在3D中渲染.UI的相关部分定义如下:

<Viewport3D x:Name="viewport">
    <Viewport3D.Children>
        <!-- This is my custom control, deriving from UIElement3D -->
        <local:myCollectionVisualizer Items="{Binding MyItems}" />
    </Viewport3D.Children>
</Viewport3D>
Run Code Online (Sandbox Code Playgroud)

(我从上面的xaml中省略了光和相机,但当然在我的代码中也存在)

现在我希望我的自定义控件将所有项(从Items我定义的依赖项属性)渲染为UIElement3D位于其绑定对象指定的位置的单个元素.

到目前为止,我的方法是覆盖GetVisual3DChild和相关的方法/属性,以设置我的项目的父子关系.我面临的问题是如何将子的转换转换数据绑定到绑定对象中定义的值 - 由于UIElement3D不是从FrameworkElement派生的,因此没有SetBinding方法,因此没有明显的方法来指定代码绑定.

请注意,绑定转换在XAML中工作正常:

<Viewport3D x:Name="viewport">
    <Viewport3D.Children>
        <perspective:Spherical3D>
            <perspective:Spherical3D.Transform>
                <Transform3DGroup>
                    <!-- This works fine! -->
                    <TranslateTransform3D OffsetX="{Binding X}" 
                                          OffsetY="{Binding Y}" 
                                          OffsetZ="{Binding Z}" />
                </Transform3DGroup>
            </perspective:Spherical3D.Transform>
        </perspective:Spherical3D>
    </Viewport3D.Children>
</Viewport3D>
Run Code Online (Sandbox Code Playgroud)

当我无法访问FrameworkElement.SetBinding时,如何从代码创建上述绑定?

c# data-binding 3d wpf

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

裁剪任意wpf几何体

我的问题的背景是我有一堆几何(大量的,想想在更大的区域上的地图)分割成多个wpf几何实例(最初它们是PathGeometry,但为了减少内存使用,我预先处理它们并在创建StreamGeometries期间加载).现在我想做的是从这些几何体生成切片.

基本上我想采取一个更大的几何对象并"切出"它的矩形(我的瓷砖),所以我得到几个较小的几何形状.类似下图:

切片大几何

请注意,我希望结果是一个新的几何体,而不是渲染.我知道我可以通过将剪辑应用于UIElement将剪辑推送到绘图视图来实现视觉效果.

我已经尝试使用Geometry.Combine,其中一个参数是剪辑矩形,但我不能让它做我想要的(我通常只得到剪辑矩形后面,或一个空几何,取决于哪个组合模式我用).

或者,如果使用WPF无法完成此操作,是否还有其他(第三方可以).NET的通用purporse几何API可以执行这些操作?或者这可以使用WPF几何API的其他部分实现?

wpf maps geometry vector-graphics

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

如何在脱机时以编程方式查明本地文件是否在TFS版本控制下

我有一个小的内部视觉工作室扩展(VS 2013),对于一个功能,我需要弄清楚磁盘上的文件是否在TFS版本控制之下.

(通过"在TFS版本控制下",我的意思是TFS跟踪有问题的文件,以便可以检出,编辑,签入等)

以下代码是我今天所拥有的,只要您连接到TFS,它就可以正常工作.它使用工作区的实例

// m_workspace is of type Microsoft.TeamFoundation.VersionControl.Client.Workspace
var items = m_workspace.GetItems(
              new[] {new ItemSpec(filename, RecursionType.None)}, 
              DeletedState.Any, 
              ItemType.Any,
              false, 
              GetItemsOptions.LocalOnly | GetItemsOptions.Unsorted);
return items.First().Items.Any();
Run Code Online (Sandbox Code Playgroud)

现在,问题是当您不在办公室防火墙内(或通过VPN连接)时,无法访问TFS服务器.实际上,主机名甚至都不会解析.

所以我的问题是:有没有其他方法让我知道文件是否受版本控制?最好使用公共API,但如果这就是它需要的话,我很好用一个丑陋的黑客...

c# tfs

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

WPF:无法在没有可怕视觉效果的情况下调整窗口大小

我正在尝试学习WPF(我在WinForms上工作很多但我对WPF不熟悉)并且在调整窗口大小时遇到​​了问题.有可怕的视觉效果.

这是预期的:http: //data.imagup.com/12/1130871175.jpg

这是我得到的:http: //data.imagup.com/12/1130871187.jpghttp://data.imagup.com/11/1130871194.jpg

我没有做任何特别的事情,即使在调整大小时空窗口也无法正确渲染!窗口最大化时我没有任何问题.有什么问题 ?

Windows 7 32位/ .Net 3.5/Raden HD5850

c# wpf graphics

4
推荐指数
1
解决办法
974
查看次数

旋转几何路径

我正在使用Streamgeometry绘制一个简单的箭头。现在我需要将箭头转到指定的角度。但是如何旋转这个几何体呢?

Dim pt1 As New Point(X1, Me.Y1) 'left point
Dim pt2 As New Point(_X2, Me.Y2) 'right point

Dim pt3 As New Point(_X2 + (HeadWidth * cost - HeadHeight * sint), Y2 + (HeadWidth * sint + HeadHeight * cost)) 'arrow line down
Dim pt4 As New Point(_X2 + (HeadWidth * cost + HeadHeight * sint), Y2 - (HeadHeight * cost - HeadWidth * sint)) 'arrow line up

context.BeginFigure(pt1, True, False)
context.LineTo(pt2, True, True)
context.LineTo(pt3, True, True)
context.LineTo(pt2, True, …
Run Code Online (Sandbox Code Playgroud)

wpf graphics geometry path

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

Visual Studio 2010检测分析器中使用的是什么时间单位?

Visual Studio 2010中的分析器很棒,但是我看不到报告检测分析器的时间结果是什么单位.结果表只是数字,我在UI中找不到任何地方我可以设置单位(如例如AQTime).

在此输入图像描述

我已经阅读了MSDN上的" 理解仪器数据 "部分,但它只是用时间来解释这些数字.("执行所花费的总时间......")

有谁知道使用了什么单位(毫秒,微秒,刻度等)?我猜几毫秒,但我不是百分百肯定.

c# profiling visual-studio-2010 visual-studio

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

如何让silverlight从MySQL获取数据

我在Silverlight中编写了一个小型的hello world测试应用程序,我想在Linux/Apache2服务器上托管.我希望数据来自MySQL(或其他一些兼容Linux的数据库),以便我可以数据绑定到数据库中的内容.

我已经设法通过使用MySQL Connector/.NET来实现它:

MySqlConnection conn = new MySqlConnection("Server=the.server.com;Database=theDb;User=myUser;Password=myPassword;");
conn.Open();
MySqlCommand command = new MySqlCommand("SELECT * FROM test;", conn);
using (MySqlDataReader reader = command.ExecuteReader())
{
     StringBuilder sb = new StringBuilder();
     while (reader.Read())
     {
         sb.AppendLine(reader.GetString("myColumn"));
     }
     this.txtResults.Text = sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)

如果我给已发布的ClickOnce应用程序完全信任(或至少是SocketPermission)并在本地运行它,这可以正常工作.

我希望这在服务器上运行,我无法让它工作,总是以权限异常结束(不允许SocketPermission).

数据库与silverlight应用程序托管在同一服务器上,如果这有任何区别的话.

编辑 好的,我现在明白为什么在客户端应用程序中显示数据库凭据是一个坏主意(显然).人们如何做到这一点呢?如何保护代理Web服务,以便以安全的方式将数据传入和传出客户端/数据库?网上有没有任何例子?

当然,我不能成为第一个使用数据库为Silverlight应用程序提供动力的人?

.net c# mysql data-binding silverlight

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

MS Surface Tag Visualizer窃取了联系事件

我正在努力使用MS Surface项目上的TagVisualizer控件.理论上,控制似乎很棒,允许您响应来自现实世界物理对象的输入

问题是控件将覆盖整个屏幕(因为我想在整个屏幕上捕获标签),因此,我的应用程序中没有其他控件将接收触摸事件.(除非,它们是视觉树中的直接上升者).

在我的应用程序中,我希望有一种"层"类型的方法,其中每个层都可以响应(联系)输入:

Window
  `- Grid
      `- LayersPanel
          `- TagVisualizer
          `- Layer 1
          `- Layer 2
          `- Layer 3
          `- Layer 4    
Run Code Online (Sandbox Code Playgroud)

现在我把标签可视化器放在哪里并不重要,它总是会窃取来自所有或其他层的联系事件.(由于RoutedEvents的性质)

对我而言,控件在实践中似乎完全没用,因为它总会干扰应用程序的其他控件.我在这里错过了什么?

所以我的问题是:关于如何解决这个问题的任何建议?有没有人在类似的场景中使用TagVisualizers?如果是这样,你是如何解决这个问题的?

顺便说一下,这些层都可以正常工作,因为它们只会窃取直接位于其子元素之上的事件(图层的其余部分对于命中测试是不可见的)

c# wpf routed-events pixelsense

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

我应该在这里使用Geometry.Freeze吗?

当WPF项目被冻结时,文档说它无法更改.在这种情况下,我只是不太确定"变化"是什么意思.

例如,如果我创建一个形状的实例然后冻结它,即使它被冻结,是否可以执行旋转或翻译等操作?

wpf geometry shapes

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