我一直在尝试创建一个数据绑定,以便在调整窗口大小时,WrapPanel自动水平调整大小以匹配它的容器(StackPanel),但没有成功。
我开始搜索如何做到这一点,并且我到达了这个
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin:@<server>:<port>:<sid>", "<username>", "<password>");
DatabaseMetaData metadata = conn.getMetaData();
String packageName = "<your package name>";
String schemaName = "<schema name>";
String procedureName = "<procedure name>";
ResultSet rs = metadata.getProcedureColumns(
packageName,
schemaName,
procedureName,
"%");
while(rs.next()) {
// get stored procedure metadata
String procedureCatalog = rs.getString(1);
String procedureSchema = rs.getString(2);
procedureName = rs.getString(3);
String columnName = rs.getString(4);
short columnReturn = rs.getShort(5);
int columnDataType = rs.getInt(6);
String columnReturnTypeName = rs.getString(7);
int columnPrecision = rs.getInt(8);
int columnByteLength = rs.getInt(9);
short columnScale = rs.getShort(10);
short columnRadix = rs.getShort(11);
short columnNullable = rs.getShort(12);
String columnRemarks = rs.getString(13);
System.out.println("stored Procedure name="+procedureName);
System.out.println("procedureCatalog=" + procedureCatalog);
System.out.println("procedureSchema=" + procedureSchema);
System.out.println("procedureName=" + procedureName);
System.out.println("columnName=" + columnName);
System.out.println("columnReturn=" + columnReturn);
System.out.println("columnDataType=" + columnDataType);
System.out.println("columnReturnTypeName=" + columnReturnTypeName);
System.out.println("columnPrecision=" + columnPrecision);
System.out.println("columnByteLength=" + columnByteLength);
System.out.println("columnScale=" + columnScale);
System.out.println("columnRadix=" + columnRadix);
System.out.println("columnNullable=" + columnNullable);
System.out.println("columnRemarks=" + columnRemarks);
}
但是在调整窗口大小时它没有做任何事情。我查看了一些例子,但我并没有真正看到这个问题。有人可以解释上面代码片段有什么问题吗?
答案 0 :(得分:3)
StackPanel
不会扩展到容器的大小 - 它们的大小就是它们的内容。因此,如果WrapPanel链接到StackPanel.Width
,则窗口增长时不会发生任何事情。
你可能正在寻找其他东西而不是StackPanel - 尝试使用Grid
。
答案 1 :(得分:1)
您已经说过要让WrapPanel在StackPanel内水平调整大小。这可能取决于您的StackPanel的Orientation
是什么。
如果你的StackPanel的Orientation
是垂直的,那么只需在你的WrapPanel上设置HorizontalAlignment="Stretch"
即可。
<StackPanel Orientation="Vertical">
<WrapPanel HorizontalAlignment="Stretch" />
</StackPanel>
或者因为你是以编程方式进行的,因为看起来......
var wrapPanel = new WrapPanel();
myStackPanel.Children.Add(wrapPanel);
wrapPanel.HorizontalAlignment = HorizontalAlignment.Stretch;
如果您的StackPanel的Orientation
是水平的,那么您将无法在此方向上正确调整WrapPanel的大小。