在Visual Studio 2008中添加WCF服务引用时,将创建名为Service Reference\ServiceReferenceNamespace的目录.
在此目录中,有名为Service.xsd,Service1.xsd,Service2.xsd,Service3.xsd和Service4.xsd的文件.这些文件不是重复的 - 不同的文件定义了不同的类型和元素.当我第一次创建服务引用时,只有一个文件,但是当我添加了更多DataContract和OperationContracts时,添加了更多Service*文件.
生成5个不同的文件而不仅仅是一个文件看起来有点奇怪.如果我删除服务引用(以及目录)然后再次添加它,则会再次添加相同的文件.
任何人都可以解释为什么创建几个文件而不只是一个?
我有一个WPF应用程序,其中应缩放用户界面,以便在窗口变大时它应该变大.在其中一个对话框中,我需要向用户显示项目列表,用户应单击其中一个.该列表将包含1到15-20个项目.我希望每个项目的字体大小与列表中其他项目的字体大小一样大,但同时我希望在窗口变大时字体大小增加.
目前,我的测试代码如下所示.
<Window x:Class="WpfApplication4.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:WpfApplication4"
Title="Window1" Height="480" Width="640">
<ScrollViewer>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30*" MinHeight="30"/>
<RowDefinition Height="30*" MinHeight="30"/>
<RowDefinition Height="30*" MinHeight="30"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" MaxHeight="100"><Viewbox><TextBlock>T</TextBlock></Viewbox></Button>
<Button Grid.Row="1" MaxHeight="100"><Viewbox><TextBlock>Test</TextBlock></Viewbox></Button>
<Button Grid.Row="2" MaxHeight="100"><Viewbox><TextBlock>Test Longer String</TextBlock></Viewbox></Button>
</Grid>
</ScrollViewer>
</Window>
Run Code Online (Sandbox Code Playgroud)
如果应用程序启动并且窗口变宽,则一切看起来都正常.如果窗口宽度减小时,文本的字体大小Test Longer String变小,但的字体大小T和Test保持相同.我明白为什么会发生这种情况 - 视图框会将内容缩放到最大尺寸.我想知道的是我应该用什么方法来解决这个问题.
我不想给控件特定的字体大小,因为有些人会在640x480这样的低分辨率屏幕上运行它,而其他人会使用更大的宽屏.
编辑:
我试图将我的代码修改为以下内容:
<ScrollViewer>
<Viewbox>
<ItemsControl>
<Button>Test 2</Button>
<Button>Test 3</Button>
<Button>Test 4 afdsfdsa fds afdsaf</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
</ItemsControl>
</Viewbox>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
但随着按钮边框的大小也增加,因此在大屏幕上,按钮边框变为厘米宽.
我想知道(几乎)总是在C#中使用自定义数据类型而不是依赖于内置类型(如System.Int32和System.String)是疯狂的.
例如,要表示人名,想法是使用名为PersonFirstName而不是System.String的数据类型(当然,PersonFirstName数据类型必须包含System.String).另一个示例是具有PersonID类,该类表示人员的数据库标识符,而不是具有System.Int32.
这里会有一些好处:
今天,如果函数将int作为参数,则很容易传入Company对象的ID而不是Person对象的ID,因为两者都是int类型.如果函数采用了CompanyID,如果我尝试传入PersonID,我会收到编译错误.
如果我想将数据库列数据类型从int更改为Person的uniqueidentifier,我只需要在PersonID类中进行更改.今天,我必须在所有需要Int并且应该代表公司的地方进行更改.
在正确的位置实施验证可能更容易.""可能永远不是一个正确的名字,PersonFirstName可以照顾它.
是的,我必须编写更多的构造函数.我可以在这些中实现隐式重载,以使它们易于使用.
这是疯了吗?